Javascript中的行索引

Javascript中的行索引,javascript,internet-explorer,dom,Javascript,Internet Explorer,Dom,我目前在IE8中的rowIndex有一个大问题。当我调用页面时,我有一个空的table元素。使用Javascript,我现在将行和列添加到此表中 // Create Elements tr = document.createElement('tr'); td = document.createElement('td'); // Append Elements to existing Table tr.appendChild(td); table.appendChild(tr); 用户稍后可以选

我目前在IE8中的rowIndex有一个大问题。当我调用页面时,我有一个空的table元素。使用Javascript,我现在将行和列添加到此表中

// Create Elements
tr = document.createElement('tr');
td = document.createElement('td');
// Append Elements to existing Table
tr.appendChild(td);
table.appendChild(tr);
用户稍后可以选择删除这些行。要删除它们,我只需调用表的deleteRow函数,并将rowIndex作为参数传递

table.deleteRow(tr.rowIndex);
在Firefox中,这很好。行索引正确,可以删除行。在IE8中,行索引始终为-1。当然,deleteRow函数找不到匹配的行,并且该行没有被删除


有人知道这个问题并有很好的解决方案吗?

您可以尝试
removeChild

这很容易:

table.removeChild(tr);

您可以尝试
removeChild

这很容易:

table.removeChild(tr);

如果该行位于表中,但该表未附加到文档,IE仍将为您提供-1行索引

您可以通过将表添加到文档中来解决此问题,但通过简单地使用通用DOM Level 1 Core方法而不是特定于表的DOM-HTML方法可能更容易避免此问题:

tr.parentNode.removeChild(tr);

最好还是创建一个
tbody
元素并将行放在其中;否则浏览器可能会意外地为您执行此操作。

如果该行位于表中,但该表未附加到文档,IE仍将为您提供-1行索引

您可以通过将表添加到文档中来解决此问题,但通过简单地使用通用DOM Level 1 Core方法而不是特定于表的DOM-HTML方法可能更容易避免此问题:

tr.parentNode.removeChild(tr);

最好还是创建一个
tbody
元素并将行放在其中;否则浏览器可能会出乎意料地为您这样做。

您不使用jQuery或其他JavaScript框架有什么原因吗?每一个JavaScript问题都必须用“使用jQuery”来回答有什么原因吗?我想使用jQuery不是一个坏主意,但是这个应用程序已经相当大了,在整个应用程序中包含jquery将是一项艰巨的工作。就像bobince说的那样,仅仅为这一行添加它真的会浪费资源有没有理由不使用jQuery或其他JavaScript框架?有没有理由每个一行JavaScript问题都必须用“使用jQuery”来回答?我想使用jQuery不是一个坏主意,但是这个应用程序已经相当大了,在整个应用程序中包含jquery将是一项艰巨的工作。就像bobince说的那样,仅仅为这一行添加它实际上是在浪费资源。我建议
tr.parentNode.removeChild(tr)
,这样你就不必担心
tr
是否在
中。我建议
tr.parentNode.removeChild(tr)
,因此,您不必担心
tr
是否在
中。