我正在尝试让ul
的孩子。我正在尝试通过childNodes
实现这一目标。然后,我在节点上迭代以将值添加到list items
的子unordered list
。但这是行不通的。
function getListItem() {
var list = document.getElementById("list").childNodes;
for (var i = 0; i < list.length; i++) {
text = document.createTextNode(i);
list[i].appendChild(text);
}
}
<body>
<ul id="list">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<button onclick="getListItem()">Submit</button>
</body>
我不知道错误来了。请帮帮我。
编辑1
Uncaught DOMException: Failed to execute 'appendChild' on 'Node': This node type does not support this method
最佳答案
使用.childNodes
时,它可能返回空格和换行符。打印元素list
时,将得到以下输出:
[text, li, text, li, text, li, text, li, text, li, text]
您会看到第一个元素是
text
而不是li
。解决方法可以使用getElementsByTagName('li')
。function getListItem() {
var list = document.getElementById("list").getElementsByTagName('li');
console.log(list);
for (var i = 0; i < list.length; i++) {
text = document.createTextNode(i);
list[i].appendChild(text);
}
}
<body>
<ul id="list">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<button onclick="getListItem()">Submit</button>
</body>
希望这行得通。
关于javascript - 获取有序列表的子节点时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45421448/