我正在尝试让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/

10-12 15:51