Javascript 如何按id(特定id除外)删除表行

Javascript 如何按id(特定id除外)删除表行,javascript,html,html-table,Javascript,Html,Html Table,我有一个表,我想删除它的所有行,除了一些具有特定ID的行 我做了以下工作: for(var y=0; y<table.rows.length; y++) { console.log("deleting row "+ y); var initialRow=document.getElementById("initial-row"); if (table.rows[y].id!=initialRow) { table.deleteRow(y);

我有一个表,我想删除它的所有行,除了一些具有特定ID的行

我做了以下工作:

for(var y=0; y<table.rows.length; y++)
  {
    console.log("deleting row "+ y);
    var initialRow=document.getElementById("initial-row");
    if (table.rows[y].id!=initialRow)
    {
      table.deleteRow(y);
      console.log("row deleted");
    }
else continue;
}

for(var y=0;y您正在将元素id(字符串)与DOM元素对象进行比较。您可以删除getElementById调用,只需执行以下操作:

if (table.rows[y].id!="initial-row")

您正在将元素id(字符串)与DOM元素对象进行比较。您可以删除getElementById调用,只需执行以下操作:

if (table.rows[y].id!="initial-row")

您正在将一个元素id字符串与一个元素对象进行比较。将永远不会相等。
var initialRow=document.getElementById(“”)
这不会返回该行的
id
,它会为您提供整个元素,以便获得
id
访问其属性,就像您使用
table.rows
initialRow.id
var initialRow=document.getElementById(“初始行”);if(table.rows[y].id!=initialRow)我不明白为什么要将“table.rows[y].id”与initialRow作为initialRow进行比较,如果您的DOM包含一个id为“initialRow”的元素,而id为string,那么将是元素的对象。您可以编写更具体的语法吗?您的意思是我可以这样做:
if(table.rows.id!=“initialRow”)
?还有另一个陷阱:在遍历列表时从列表中删除元素可能会导致跳过列表中的某些元素。为防止出现这种情况,请从最后一个元素循环到第一个元素(顺序相反)或者记住要在某些列表中删除的元素,然后稍后删除这些元素。您正在将元素id字符串与元素对象进行比较。将永远不会相等。
var initialRow=document.getElementById(“”)
这不会返回该行的
id
,它会为您提供整个元素,以便获得
id
访问其属性,就像您使用
table.rows
initialRow.id
var initialRow=document.getElementById(“初始行”);if(table.rows[y].id!=initialRow)我不明白为什么要将“table.rows[y].id”与initialRow作为initialRow进行比较,如果您的DOM包含一个id为“initialRow”的元素,而id为string,那么将是元素的对象。您可以编写更具体的语法吗?您的意思是我可以这样做:
if(table.rows.id!=“initialRow”)
?还有另一个陷阱:在遍历列表时从列表中删除元素可能会导致跳过列表中的某些元素。为防止出现这种情况,请将列表从最后一个元素循环到第一个元素(逆序),或者记住要在某个列表中删除的元素,然后稍后再删除这些元素。