36

与直接设置其 textContent 相比,创建 TextNode 并将其附加到 HTML 元素有什么优势?

假设我有一个跨度。

var span = document.getElementById('my-span');

我想改变它的文字。使用有什么好处:

var my_text = document.createTextNode('Hello!');
span.appendChild(my_text);

超过

span.textContent = 'hello';

4

1 回答 1

48

这不是真正的优势问题,而是根据需要正确使用。

根本区别在于:

  • createTextNode()是一种方法,正如它的名字所说的那样工作:它创建一个元素......然后你必须对它做一些事情(就像在你的例子中,你将它作为一个孩子附加);
    因此,如果您想拥有一个新元素并将其放置在某处,它会很有用
  • textContent是您可以获取或设置的属性,具有唯一声明,仅此而已;
    因此,当您只想更改现有元素的内容时,它很有用

现在,在您的问题的确切情况下,您说您想更改元素的文本...
更清楚地说,您有以下 HTML 元素:

<span>Original text</span>

如果您使用的是第一个解决方案:

var my_text = document.createTextNode('Hello!');
span.appendChild(my_text);

然后它将以:

<span>Original textHello!</span>

因为你附加了你的textNode.

所以你应该使用第二种解决方案。

于 2015-07-27T01:38:19.000 回答