鸡龟骨滚羹贵
2018-10-19 17:08
答案的
var newtext= document.createTextNode("PHP");
newnode.appendChild(newtext);
这两行代码我发觉用
newnode.innerHTML="PHP";
也能代替输出,但有什么不同?应该选用哪个才是正确的?
createTextNode是创造一个文本节点,然后添加这个文本节点;
而底下的,是先创造节点,再用innerHTML去获取并改变,innerHTML能改变的不止文本节点。
官方:
innerHTML会将文本中包含的HTML代码实现效果,而createTextNode只是纯粹创造了文本节点,
所以返回的效果也就是纯文本内容。如果仅仅是想添加文字,两者都行,若是想添加包含html元素并要实现html效果,用innetHTML(也可以用dom方法:用createElement创建元素节点,在这个节点下创建文本节点,,这样会比较麻烦)
innerHTML可以用来获取和更新文本及标签,但添加的标签如果缺失关闭标签,可能会影响整个页面的设计。更坏的情况,使用innerHTML把用户提供内容添加到一个页面上,他们可能会添加恶意内容,如XSS攻击。
而createTextNode则可以避免以上情况,如果想在DOM中添加一个空元素,可以跳过它,在createElemen()后直接appendChild()即可。
innerHTML可以是一个dom,比如说一个table,textNode只是一个文本节点,显然,文本节点要小于innerHTML
,比如说body的innerHTML就是body下的所有
JavaScript进阶篇
468195 学习 · 21891 问题
相似问题