问答详情
源自:9-12 插入节点appendChild()

createTextNode和innerHTML区别?

答案的

  var newtext= document.createTextNode("PHP"); 

  newnode.appendChild(newtext); 

这两行代码我发觉用

  newnode.innerHTML="PHP";

也能代替输出,但有什么不同?应该选用哪个才是正确的?

提问者:鸡龟骨滚羹贵 2018-10-19 17:08

个回答

  • 狼王梦0_0
    2019-08-20 09:30:56

    createTextNode是创造一个文本节点,然后添加这个文本节点;

    而底下的,是先创造节点,再用innerHTML去获取并改变,innerHTML能改变的不止文本节点。

    官方:

    innerHTML会将文本中包含的HTML代码实现效果,而createTextNode只是纯粹创造了文本节点,

    所以返回的效果也就是纯文本内容。如果仅仅是想添加文字,两者都行,若是想添加包含html元素并要实现html效果,用innetHTML(也可以用dom方法:用createElement创建元素节点,在这个节点下创建文本节点,,这样会比较麻烦)


  • iFlowers
    2018-12-27 11:12:28

    innerHTML可以用来获取和更新文本及标签,但添加的标签如果缺失关闭标签,可能会影响整个页面的设计。更坏的情况,使用innerHTML把用户提供内容添加到一个页面上,他们可能会添加恶意内容,如XSS攻击。

    而createTextNode则可以避免以上情况,如果想在DOM中添加一个空元素,可以跳过它,在createElemen()后直接appendChild()即可。

  • 江户川柯南_qq
    2018-10-22 23:47:32

    innerHTML可以是一个dom,比如说一个table,textNode只是一个文本节点,显然,文本节点要小于innerHTML

    ,比如说body的innerHTML就是body下的所有