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

2

我能想到的最简单的方法是,

$('.inventory:gt(0)').each(function() {
    $(this).remove();
});

工作小提琴

于 2013-09-30T12:16:28.530 回答
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 回答