2017-01-14 10 views
0

特定のクラス名でページからすべての要素を削除しようとしていますが、何らかの理由で代替クラスのみが削除されます。クラス名で削除する

コードペンリンクは、ここで私が間違っているつもりです https://codepen.io/miller619/pen/WoVpdE

function prev(e) { 
 
    'use strict'; 
 
    e.preventDefault(); 
 
    var getID = document.getElementById("zone"); 
 
    var removeXButtons = getID.getElementsByClassName("xbutton"); 
 
    for (var i = 0; i < removeXButtons.length; i++) { 
 
     removeXButtons[i].parentNode.removeChild(removeXButtons[i]); 
 
    } 
 

 
}
<div id="zone"> 
 
    <input class="xbutton" name="xbtn" type="button" value="&times;"> 
 
    <input class="xbutton" name="xbtn" type="button" value="&times;"> 
 
    <input class="xbutton" name="xbtn" type="button" value="&times;"> 
 
</div> 
 
<div id="pbtn" > <a href="#" class="btn btn-info btn-preview" onclick="prev(event)"><span class="glyphicon glyphicon-eye-open"></span> Delete all</a> </div>

のですか?

+0

ループ。要素を削除すると、変更後のすべての要素のループインデックスが返されます。 – Blazemonger

+0

子を削除すると、残りの子のインデックスも各繰り返しで変更されるためです。 – asprin

+0

[DOMからHTMLCollection要素を削除する]の複製があります(http://stackoverflow.com/questions/23988982/removing-htmlcollection-elements-from-thedom) – Xufox

答えて

2

forループの順序を変更するだけで動作します。問題は、配列から要素を削除すると、要素の順序が変更されます。アレイを後方に移動すると、この問題が発生することはありません。代わりに、前方の後方

function prev(e) { 
    'use strict'; 
    e.preventDefault(); 
    var getID = document.getElementById("zone"); 
    var removeXButtons = getID.getElementsByClassName("xbutton"); 
    for (var i = removeXButtons.length-1; i >=0 ; i--) { 
     removeXButtons[i].parentNode.removeChild(removeXButtons[i]); 
    } 
} 
} 

あなたがループに転送したい場合は、あなたがこれを行うことができ、

function prev(e) { 
     'use strict'; 
     e.preventDefault(); 
     var getID = document.getElementById("zone"); 
     var removeXButtons = getID.getElementsByClassName("xbutton"); 
     for (var i = 0; i < removeXButtons.length-1 ; i++) { 
      removeXButtons[i].parentNode.removeChild(removeXButtons[i]); 
      i--; 
     } 
    } 
    } 
+0

'(removeXButtons.length)removeXButtons [0] .parentNode.removeChild(removeXButtons [0]);' –

+0

ありがとうございました。ありがとうございました.. – Mill3r

関連する問題