在已选择的元素之后删除所有<select>元素

时间:2018-04-25 13:33:22

标签: javascript select removechild

我有一个表单中动态生成的&lt; choices&gt;列表。我需要这样做,以便如果用户决定返回到之前的&lt; select&gt;,则所有&lt; select&gt;它将从页面中删除。 我的代码将在console.log中正确显示&lt; select&gt;要删除的元素,但如果我开始删除它们,它就会停止工作。我正在使用非实时列表循环,所以我很困惑为什么它没有按预期工作。 HTML: &lt; form action =“#”method =“post”&gt;     &lt; label for =“select1”&gt; square 1:&lt; / label&gt;     &lt; select name =“1”id =“select1”&gt;&lt; / select&gt;     &lt; label for =“select2”&gt; square 2:&lt; / label&gt;     &lt; select name =“2”id =“select2”&gt;&lt; / select&gt;     &lt; label for =“select3”&gt; square 3:&lt; / select&gt;     &lt; select name =“3”id =“select3”&gt;&lt; / select&gt;     ... &LT; /形式&GT; JS(select是当前选中的&lt; select&gt;):     var form = document.getElementsByTagName('form')[0];     var choices = form.getElementsByTagName('select');     for(var i = 0; i&lt; choices.length; i ++){         if(选择[i] .name&gt; select.name){             var eleToRemove = choicesLive [choose [i] .getAttribute('name') - 1];             的console.log(eleToRemove);             form.removeChild(eleToRemove.previousSibling); //删除标签             form.removeChild(eleToRemove);         }     }

1 个答案:

答案 0 :(得分:0)

正确写入时可以正常工作

&#13;
&#13;
var sel= 2; // for example
var form = document.getElementsByTagName('form')[0];
var selects = form.getElementsByTagName('select');
for (var i = selects.length-1; i >= 0; i--) {
    if (+selects[i].name > sel) {
        var eleToRemove = selects[i];
        console.log(eleToRemove);
        form.removeChild(eleToRemove.previousElementSibling); // removes label
        form.removeChild(eleToRemove);
    }
}
&#13;
&#13;
&#13;