2017-06-15 74 views
0
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
    <input id="wb" type="text" /> 
    <input id="an" type="button" value="按钮" /> 
    <ul id="ul1"> 

    </ul> 
    <script> 
     window.onload=function() 
     { 
      var oWb = document.getElementById("wb"); 
      var btn = document.getElementById("an"); 
      var oUl = document.getElementById("ul1"); 
      btn.onclick=function() 
      { 
       var oLi = document.createElement("li"); 

       oLi.innerHTML = oWb.value; 
       oUl.insertBefore(oLi,oLi[0]); 

      } 
     } 
    </script> 
</body> 
</html> 

我想插入每个点击,都插在li前面,然后oUl.insertBefore(oLi,oLi [0]);选择插入oLi [0]为什么不死?是不是每次点击创建一个li,然后在这个索引中插入第一个0,应该没问题?在新创建的子节点之前插入无效?

+0

“oLi”是您刚创建的列表项。没有理由试图访问'oLi [0]'在这里有意义。如果你只是想引用列表的第一个孩子 - 那么就这样做吧,'oUl.firstChild' – CBroe

+0

@CBroe你可以请他翻译一下他的问题吗? – Sagar

回答

0

您误解了how insertBefore works。您的oLi元素甚至没有[0]属性。相反,您需要通过oUl.firstChild才能将oLi插入前面。

oUl.insertBefore(oLi, oUl.firstChild); 
+0

我看到有一种方法可以添加一个var aLi = oUl.getElementsByTagName(“li”)来索引插入的通知,然后询问是否不必创建getElementsByTagName我可以使用这个标签的索引? – hope

+0

是的,你也可以使用['oUl.childNodes [index]'](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes) 或['oUl.children [index]'] (https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/children) – Bergi

相关问题