var p = document.getElementById(e),
nodes = p.querySelectorAll('span');
for (var i=0; i<nodes.length; i++) {
node = nodes[i];
node.innerHTML = ' ';
}
如果我在console.log(p)和console.log(节点)之后创建,我发现更改会影响节点,但不会影响p。为什么以及如何申请p?
如果我让nodes = p.childNodes;
一切正常。
那么,主要问题是,为什么它适用于childNodes
并且不能与querySelectorAll
一起使用?
已更新
最后,添加如下内容可以解决问题:
for (var k=0; k<childNodes.length; k++) {
for (var j=0; j<nodes.length; j++) {
if (childNodes[k].id === nodes[j].id) {
p.replaceChild(nodes[j],childNodes[k]);
}
}
}
nodes = querySelectorAll
和childNodes = p.childNodes
;
答案 0 :(得分:1)
您可以直接设置innerHTML
的{{1}}:
p
请注意,Element.querySelectorAll()
“从调用它的元素返回所有元素p.innerHTML = ' ';
的非实时NodeList,它与指定的CSS选择器组匹配。”
因此,默认情况下,您在descended
上调用此元素的元素不会包含在返回的p
中。
答案 1 :(得分:0)
在使用NodeList之前,应将其转换为数组。