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


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);
}
}