Javascript 设置node.outerHTML不会执行任何操作
在for outerHTML中规定,当查看Javascript 设置node.outerHTML不会执行任何操作,javascript,html,Javascript,Html,在for outerHTML中规定,当查看outerHTML时: 将元素替换为通过解析字符串内容生成的节点,并将元素的父元素作为片段解析算法的上下文节点 但是,当我在控制台中尝试此操作时,它不起作用: var d = document.createElement('div') d.outerHTML = '<p>Some Text</p>' console.log(d) //<div> var d=document.createElement('div'))
outerHTML
时:
将元素替换为通过解析字符串内容生成的节点,并将元素的父元素作为片段解析算法的上下文节点
但是,当我在控制台中尝试此操作时,它不起作用:
var d = document.createElement('div')
d.outerHTML = '<p>Some Text</p>'
console.log(d) //<div>
var d=document.createElement('div'))
d、 outerHTML='一些文本'
控制台日志(d)//
有人能给我解释一下为什么这不能按预期工作吗
//编辑:根据注释,我应该将其附加到渲染上下文中。以下仍然不适用于我:
var d = document.createElement('div')
document.body.appendChild(d)
d.outerHTML = '<p>Some Text</p>'
console.log(d) //<div>
var d=document.createElement('div'))
document.body.appendChild(d)
d、 outerHTML='一些文本'
控制台日志(d)//
//EDIT2:查看生成的源代码,元素确实被替换了。然而,d
仍然是一个div。好吧,这让人困惑。为什么会这样?答案是div元素被替换的原因,console.log(d)
指的是原始div,而不是被替换的内容:
…当文档中的元素将被替换时,变量
已设置其outerHTML属性的将仍然保留对
原始元素
因为没有父元素来提供解析上下文。我也这么认为,所以我尝试了这个示例,但增加了一行
document.body.appendChild(d)
-在设置outerHTML之前,您是否需要appendChild?-它适用于我(Chrome)-正如文档中所述:“此外,虽然文档中的元素将被替换,但设置了outerHTML属性的变量仍将保留对原始元素的引用:”猜读是一项有用的技能-在本例中也是如此。谢谢@j08691。把它作为答案贴出来,我会接受的