Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在使用循环从父节点删除元素_Javascript_Arrays_Loops_Ecmascript 6 - Fatal编程技术网

Javascript 正在使用循环从父节点删除元素

Javascript 正在使用循环从父节点删除元素,javascript,arrays,loops,ecmascript-6,Javascript,Arrays,Loops,Ecmascript 6,今天我要解决这个难题,所以我有一个html元素数组,例如3个输入 我想从dom中删除每一个。所以我必须在它们上面迭代循环,但我也不应该增加值,因为它将跳过所有其他元素,这意味着我必须只删除数组的第一个元素,直到它存在,所以对于这个任务,我使用以下代码 while(inputs[0]) { inputs[0].parentNode.removeChild(inputs[0]); } 这可以完美地消除所有元素。 但对于……的循环呢?它还获取数组的每个值,如果我每次从数组中获取元素时删除

今天我要解决这个难题,所以我有一个html元素数组,例如3个输入 我想从dom中删除每一个。所以我必须在它们上面迭代循环,但我也不应该增加值,因为它将跳过所有其他元素,这意味着我必须只删除数组的第一个元素,直到它存在,所以对于这个任务,我使用以下代码

 while(inputs[0]) {
    inputs[0].parentNode.removeChild(inputs[0]);
 }
这可以完美地消除所有元素。 但对于……的循环呢?它还获取数组的每个值,如果我每次从数组中获取元素时删除第一个输入会怎么样?像这样:

for(input of inputs){
    inputs[0].parentNode.removeChild(inputs[0]);
}
我也试过了,在它留下的3个输入中,第三个没有删除它 所以我想知道为什么?有人能告诉我它是怎么漏掉第三个的吗?图形化的解释将是最好的


谢谢

在第一次迭代时,迭代器位于零位置,有三个元素。你删除一个

 v
 0 1 2
在第二次迭代中,迭代器位于位置1,有两个元素。你删除一个

   v
 0 1
在第三次迭代时,迭代停止,因为只有一个元素,索引为三,所以它位于数组之外。没有执行删除操作

      v
 0
这里的主要问题/优点是节点是一个活动的集合。如果它不是实时的,例如,如果使用querySelectorAll,则第二个版本可以工作:

 //     v declare variables!
 for(const input of document.querySelectorAll("input"))
   input.remove(); // < remove is way easier

是的,但在您的回答中,第一个元素[0]被删除,第三个元素[1]被删除,因为只剩下第二个和第三个元素,这意味着第二个元素必须留在数组中,但在我的代码中,还有第三个元素。为什么?不,您总是删除第一个元素。如果删除输入而不是输入[0],则第二个将保留