ZetCode

JavaScript createTextNode

最后修改于 2025 年 4 月 2 日

在本文中,我们将探讨 JavaScript 中的 document.createTextNode 方法。此方法创建一个新的文本节点,该节点可以添加到 DOM 树中,用于在网页上显示文本内容。

基本定义

document.createTextNode 方法使用指定的文本内容创建一个新的文本节点。文本节点只包含文本,不能包含子节点。

文本节点与元素节点不同。它们表示元素内的文本内容。当您需要将纯文本添加到 DOM 而不包含 HTML 标记时,此方法非常有用。

创建基本文本节点

此示例演示了如何创建一个简单的文本节点并将其附加到文档主体。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Basic Text Node</title>
</head>
<body>

<div id="container"></div>

<script>
    const textNode = document.createTextNode('Hello, World!');
    const container = document.getElementById('container');
    container.appendChild(textNode);
</script>

</body>
</html>

在此基本示例中,我们创建一个内容为“Hello, World!”的文本节点。然后,我们将此文本节点附加到 ID 为“container”的 div 元素。

appendChild 方法用于将文本节点添加到 DOM。这展示了 createTextNode 将文本内容添加到网页的基本用法。

添加多个文本节点

此示例展示了如何创建多个文本节点并将其添加到不同的元素中。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Multiple Text Nodes</title>
</head>
<body>

<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>

<script>
    const headerText = document.createTextNode('Welcome to our site');
    const contentText = document.createTextNode('Main content goes here');
    const footerText = document.createTextNode('Copyright 2025');
    
    document.getElementById('header').appendChild(headerText);
    document.getElementById('content').appendChild(contentText);
    document.getElementById('footer').appendChild(footerText);
</script>

</body>
</html>

在这里,我们创建了三个具有不同内容的分离文本节点。每个文本节点都附加到文档中的不同 div 元素。

这表明 createTextNode 可用于填充页面的多个部分。每个文本节点都是独立的,可以单独修改。

将文本节点与元素结合

此示例演示了如何将文本节点与 HTML 元素结合以创建更复杂的內容结构。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Combining Elements</title>
</head>
<body>

<div id="article"></div>

<script>
    const article = document.getElementById('article');
    
    const title = document.createElement('h2');
    const titleText = document.createTextNode('Article Title');
    title.appendChild(titleText);
    
    const para = document.createElement('p');
    const paraText = document.createTextNode('This is the article content.');
    para.appendChild(paraText);
    
    article.appendChild(title);
    article.appendChild(para);
</script>

</body>
</html>

在此示例中,我们创建了元素节点(h2 和 p)和文本节点。在将元素添加到主文章 div 之前,文本节点被添加到各自的父元素中。

这表明 createTextNode 如何与元素创建结合使用来构建结构化内容。文本节点提供实际内容,而元素提供语义结构。

动态内容更新

此示例展示了如何使用文本节点动态更新页面上的内容。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>Dynamic Updates</title>
</head>
<body>

<div id="counter">Count: </div>
<button onclick="incrementCounter()">Increment</button>

<script>
    let count = 0;
    const counterText = document.createTextNode(count);
    document.getElementById('counter').appendChild(counterText);
    
    function incrementCounter() {
        count++;
        counterText.nodeValue = count;
    }
</script>

</body>
</html>

在这里,我们创建了一个计数器,每次单击按钮时它会递增。初始计数使用文本节点显示,我们通过修改其 nodeValue 属性来更新它。

这表明文本节点可用于高效的动态更新。我们不需要重新创建文本节点,而是简单地更新现有节点,这对于频繁更新更有效率。

转义 HTML 字符

此示例演示了 createTextNode 如何自动转义 HTML 字符,从而提供针对 XSS 攻击的保护。

index.html
<!DOCTYPE html>
<html>
<head>
    <title>HTML Escaping</title>
</head>
<body>

<div id="safe-content"></div>

<script>
    const maliciousInput = '<script>alert("XSS")</script>';
    const safeText = document.createTextNode(maliciousInput);
    document.getElementById('safe-content').appendChild(safeText);
</script>

</body>
</html>

在此示例中,我们尝试将潜在的恶意脚本内容作为文本节点插入。createTextNode 方法会自动转义 HTML 字符,将它们渲染为文本而不是可执行代码。

这显示了在使用 createTextNode 显示用户生成内容时的重要安全优势。它通过将所有输入视为字面文本来帮助防止 XSS 攻击。

来源

MDN createTextNode 文档

在本文中,我们展示了如何在 JavaScript 中使用 document.createTextNode。此方法对于安全地将文本内容添加到 DOM 至关重要,并且在处理动态内容时特别有用。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十年以上的经验。

列出 所有 JS DOM 教程