2017-06-15 73 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

相關問題