javascript刪除節點的相容問題。

來源:互聯網
上載者:User

一個刪除節點的JS,在IE中刪除最後一個節點沒有問題,但在firefox中每次點了刪除後不會刪除,再點一次才能刪除。

 

<html>
 <head>
  <title>刪除元素 Javascript RemoveChild</title>
  <script type="text/javascript">
   function delNode(){
    var para = document.getElementById("delUl");
    var paraLen = para.getElementsByTagName("li").length;
    if(paraLen>0)
    {
        para.removeChild(para.lastChild);

    }else{
     alert("沒有了!");
    }
   }
  </script>
 </head>
 <body>
  <ul id="delUl">
   <li>list1</li>
   <li>list2</li>
   <li>list3</li>
   <li>list4</li>
   <li>list5</li>
  </ul>
  <input type="button" value="Delete" onclick="delNode();" />
 </body>
</html>

 

改為:

 

function delNode(){
    var para = document.getElementById("delUl");
    var paraLen = para.getElementsByTagName("li").length;
    if(paraLen>0)
    {
        //while用於支援firefox,由於Firefox認為這裡的lastChild是文本節點,直接removeChild(para.lastChild)不起作用
     while(para.lastChild && para.lastChild.nodeType == 3)
     {
      para.removeChild(para.lastChild);
     }

     para.removeChild(para.lastChild);
     
     //另一種更簡便的方法:lastElementChild只支援Firefox
     //para.removeChild(para.lastElementChild ? para.lastElementChild : para.lastChild);

    }else{
     alert("沒有了!");

     para.removeChild(para.lastChild);

    }

 

這樣IE和Firefox效果一樣了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.