文本节点还是textContent?

43

创建一个 TextNode 并将其附加到 HTML 元素上相对于直接设置其 textContent 的优点是什么?

比方说我有一个 span 元素。

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

我希望更改它的文本。使用“:”有什么优势?

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

结束

span.textContent = 'hello';

1个回答

58

重要的不是优势,而是根据需要进行适当的使用。

基本区别在于:

  • createTextNode() 是一个方法,正如其名称所示:它创建一个元素...然后你必须对它做一些事情(就像在你的示例中,将它作为子元素附加);
    因此,如果你想要一个新元素并将其放置在某个位置上,这个方法是有用的。
  • textContent 是一个可获取或设置的属性,只有一个语句,没有其他功能;
    因此,如果你只想改变一个已经存在的元素的内容,这个属性是有用的。

现在针对你的问题,你说你想要更改元素的文本...
为了更清楚地说明,假设你有以下HTML元素:

<span>Original text</span>

如果您正在使用第一种解决方案:

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

然后以此结束:

<span>Original textHello!</span>
因为您已经添加了文本节点,所以应该使用第二种解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接