1

Javascript でクラスごとにフォームから要素を削除しようとすると、何らかの理由で他のすべての要素が削除されます。何がこの動作を引き起こしているのかまったくわかりません。誰かが私の欠陥のあるロジックがどこにあるかを指摘してくれることを願っています.

最初の要素 (inv0) を残して残りをすべて削除したいだけですが、以下の正確なコードを使用すると、inv0、inv2、inv4 が残ります。

JS:

function clearInventoryFields()
{
    // Get the element by their class name
    var invFields = document.getElementsByClassName('inventory');

    for (var i = 1; i < invFields.length; i++)
    {
        invFields[i].parentNode.removeChild(invFields[i]);
    }
}

HTMLは次のようになります...

<fieldset style="width:62%; float:left; margin-left: 19%;">
<div id="inv0" class="inventory" style="margin-bottom:5px;"> … </div>
<div id="inv1" class="inventory" style="margin-bottom:5px;"> … </div>
<div id="inv2" class="inventory" style="margin-bottom:5px;"> … </div>
<div id="inv3" class="inventory" style="margin-bottom:5px;"> … </div>
<div id="inv4" class="inventory" style="margin-bottom:5px;"> … </div>
<div id="inv5" class="inventory" style="margin-bottom:5px;"> … </div>
</fieldset>
<div class="clear"></div>
4

3 に答える 3

1

これを試して :

function clearInventoryFields()
{
    // Get the element by their class name
    var invFields = document.getElementsByClassName('inventory');

    for (var i = invFields.length-1; i >= 1 ; i--)
    {
      invFields[i].parentNode.removeChild(invFields[i]);
    }
}

例: http://jsbin.com/AyazEl/1

于 2013-09-30T11:52:12.990 に答える
1

逆にやってみる

for (var i = invFields.length - 1; i > 0; i--)
  • ここを参照してください。それはあなたが望むように機能します。
于 2013-09-30T11:52:14.723 に答える