在javascript中删除表行

Boo*_*ley 10 javascript

我在使用javascript中的函数时遇到问题,无法弄清楚原因.这真的很直接.我正在尝试删除html表中的所有行.所以我写道:

function delete_gameboard(){
   var table = document.getElementById("gameboard");
   var rowCount = table.rows.length;
   for (var i = 0; i < rowCount; i++) {
      table.deleteRow(i);
   }
}
Run Code Online (Sandbox Code Playgroud)

然而,它只会删除其中的一半.任何人都能看到导致这种奇怪行为的原因吗?

xda*_*azz 24

因为当你删除第一行时,第二行将成为第一行,它是动态的.

你可以这样做:

while(table.rows.length > 0) {
  table.deleteRow(0);
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 5

考虑一下:

index 0:  row #1
index 1:  row #2
index 2:  row #3
index 3:  row #4
index 4:  row #5
Run Code Online (Sandbox Code Playgroud)

你删除索引#2(第3行),所以DOM引擎调整索引键,你最终得到:

index 0:  row #1
index 1:  row #2
index 2:  row #4   <---hey! index #2 is still there
index 3:  row #5
Run Code Online (Sandbox Code Playgroud)

你基本上是在你所站立的地方挖一个洞,所以当你深入挖掘时,你会自然地沉入更深的地方并且永远不会看到任何进展......直到你在表中删除了用完的行.