Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TextNode或innerHTML_Javascript_Html - Fatal编程技术网

Javascript TextNode或innerHTML

Javascript TextNode或innerHTML,javascript,html,Javascript,Html,假设我们有以下元素Hello World。如果我想修改标记中的内容,我在javascript代码中有两种方法: document.getElementById("abc").innerHTML="good morning"; document.getElementById("abc").firstChild.nodeValue="good morning"; 问题是: 这两种解决方案的区别是什么? 我应该用哪一个?有一个比另一个好吗 第一个将删除目标元素中可能存在的任何HTML元素。只有当第

假设我们有以下元素

Hello World

。如果我想修改
标记中的内容,我在javascript代码中有两种方法:

document.getElementById("abc").innerHTML="good morning";
document.getElementById("abc").firstChild.nodeValue="good morning";
问题是:

  • 这两种解决方案的区别是什么?
  • 我应该用哪一个?有一个比另一个好吗

第一个将删除目标元素中可能存在的任何HTML元素。只有当第一个子节点是文本节点时,第二个子节点才起作用(常见的错误是尝试在空元素上使用它)

第二种是“更正确的”(
innerHTML
实际上是一种haxy快捷方式),但第一种肯定更可靠。也就是说,它很容易受到XSS注入的影响

要完全正确,请执行以下操作:

var abc = document.getElementById('abc');
while(abc.firstChild) abc.removeChild(abc.firstChild);
abc.appendChild(document.createTextNode("good morning"));
建议阅读:1)2)