[英]How to get childs data javascript
有人可以解释一下我做错了什么吗?
let toolbarForChilds = document.getElementById("toolbar"); for (let i = 0; i < toolbarForChilds.childNodes.length; i++) { toolbarForChilds.childNodes[i].style.cursor = "default"; }
<div class="sample-toolbar" id="toolbar" style="text-align: center;"> <div id="title">#1</div> <div id="another thing">#2</div> </div>
我在控制台中收到此错误:
Uncaught TypeError: Cannot set property 'cursor' of undefined
childNodes
包括所有子节点——包括非元素节点,如文本和注释节点。 要获取仅包含元素的集合,请改用ParentNode.children
。
您不需要使用childNodes
。 您可以使用querySelectorAll()
定位所有元素并按以下方式循环遍历它们:
let toolbarForChilds = document.querySelectorAll("#toolbar div"); for (let i = 0; i < toolbarForChilds.length; i++) { toolbarForChilds[i].style.cursor = "default"; }
<div class="sample-toolbar" id="toolbar" style ="text-align: center;"> <div id ="title">#1</div> <div id ="another thing">#2</div> </div>
您的代码不起作用的原因是 childNodes 还包含元素之间的换行符。 您可以通过console.log
childNodes 以查看它们。 如果您将其包装在 try-catch 中以跳过这些代码,您的代码将起作用,尽管您应该遵循 Mamun 的答案以获得更简洁的方法。
for (let i = 0; i < toolbarForChilds.childNodes.length; i++) {
try {
toolbarForChilds.childNodes[i].style.cursor = "default";
}
catch {
continue;
}
}
node.childNodes
返回没有样式属性的元素,如文本节点。 仅获取节点元素,即 div 的: id ="title"
& id ="another thing"
使用node.children
。 这在下面实现。
let toolbarForChilds= document.getElementById("toolbar"); /* console.log(toolbarForChilds.childNodes); */ for (let i = 0; i < toolbarForChilds.children.length; i++) { toolbarForChilds.children[i].style.cursor = "help"; }
<div class="sample-toolbar" id="toolbar" style ="text-align: center;"> <div id ="title">#1</div> <div id ="another thing">#2</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.