亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

for循環遍歷出錯

for循環遍歷出錯

函數式編程 2019-02-14 18:15:56
<body>    <div id="J_APP_Wrapper">        <div class="" recharge="true">1</div>        <div class="" recharge="true">2</div>        <div class="" recharge="true">3</div>        <div class="live-wrapper">4</div>    </div>    <script type="text/javascript">    window.onload = function() {        remove()    }    // 刪除節點    function remove() {        var removeNode = document.getElementById("J_APP_Wrapper");        var removeNodeL = removeNode.children;        console.log(removeNodeL)        for (var i = 0; i < removeNodeL.length; i++) {            if (removeNodeL[i].className != "live-wrapper") {                removeNode.removeChild(removeNodeL[i])            }            // if (removeNodeL[i].getAttribute("recharge") == "true") {            //     removeNode.removeChild(removeNodeL[i])            // };        };    }    </script></body>問題是 按照我的邏輯我是刪除className != "J_APP_Wrapper" 的節點 但是 結果是出現2和4 ,希望尋求幫忙 告知原因如圖
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

這里 你要明白removeNodeL是儲存了你的node節點元素的。既然明白這個 那么我們就能分析了


for (let i = 0; i < removeNodeL.length; i++) {


    if (removeNodeL[i].className != "live-wrapper") {

        console.log(i)

        removeNode.removeChild(removeNodeL[i]);

    }

};

當輸出i時會發現

https://img1.sycdn.imooc.com//5c6f5ceb000103e900380047.jpg


按道理來說 應該會輸出三次,可這里為什么只有兩次呢,原因是開頭說了removeNodeL是儲存了節點,當你每次刪除了節點后,removeNodeL數組里面的值也會減少


當i=0的時候 removeNodeL的值為<div>2</div><div>3</div><div>4</div>

當i=1的時候 (注意,此時removeNodeL[1]是<div>3</div>!)removeNodeL的值為<div>2</div><div>4</div>


這樣問題就出來咯~ 主要還是會分析,希望采納


查看完整回答
反對 回復 2019-02-22
  • 1 回答
  • 0 關注
  • 412 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號