前端學習筆記之cloneNode()


      最近工作很忙,有段時間沒學習我的代碼了,昨天再打開看,發現很多之前很爛熟的東西居然也變得模糊。正好之前一直躍躍欲試想參加的“先行者計划”論壇竟然可以看到老師布置的練習題目了,於是還是決定跟着論壇一起做題吧,每天堅持前進一小步,希望自己能早日轉行前端。
昨天做了第一個題,題目如下:
      

 

      這個題還算簡單,“克隆五次”我想到了for循環,cloneNode()方法之前在學習js基礎時還有印象,只是已經不太記得括號內應該放什么參數了,然后看到cloneNode()時想起了jQuery中同樣功能的clone(),同樣還是對參數不太清楚。然后就正好查了一下,順便加深一下記憶。
cloneNode()方法,是DOM中克隆節點的方法,接收boolean類型的參數,也不可以不設置參數,不設置參數時默認為false。參數設置為true時,表明克隆節點及其屬性以及后代;參數設置為false時,表明克隆節點本身。事件方法應該也算是一種屬性吧,所以在參數為true的情況下,綁定的事件應該也要被克隆。
      關於jQuery中的clone(),也接收true和false參數,用法同上,只是它只適用於jQuery對象。
      雖然看起來簡單,但是寫起代碼來還是耗了一番心力的,我做的答案如下, 雖然性能發面還有需要優化的地方。
<script>

    window.onload=function(){
           var div=document.getElementById("div_0");
           var main=document.querySelector("#main");
           for(var i=0; i<5; i++){
                 var clone=div.cloneNode(true);

                 main.appendChild(clone);

           }

      }

</script>

不過在論壇里,發現有一位同學寫得特別棒,使用了createDocumentFragment文檔碎片,大大提高了效率。代碼摘錄過來,以便學習。

<script>
      var node="";
      var fragment = document.createDocumentFragment();
      for (var i = 1; i <= 5; i++) {
            node=document.getElementById("div_0").cloneNode(true);
            fragment.appendChild(node);
      }
      document.getElementById("main").appendChild(fragment);
</script>

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM