按类名删除表行-Javascript

按类名删除表行-Javascript,javascript,dom,Javascript,Dom,我已经浏览了很多关于这段简单代码的论坛帖子。并尝试了许多变化和方法,但毫无效果 我有一个基于数据库查询构建表的脚本。我将其限制为10个结果,并提供前进和后退按钮以从数据库转到其他结果。当您按下“下一步”按钮时,我需要它删除所有当前表行,以便它可以使用查询的新结果重新创建它们。我正在使用以下代码删除行 if (document.getElementsByClassName('shiftTrRow')) { table = document.getElementById('resultsTa

我已经浏览了很多关于这段简单代码的论坛帖子。并尝试了许多变化和方法,但毫无效果

我有一个基于数据库查询构建表的脚本。我将其限制为10个结果,并提供前进和后退按钮以从数据库转到其他结果。当您按下“下一步”按钮时,我需要它删除所有当前表行,以便它可以使用查询的新结果重新创建它们。我正在使用以下代码删除行

if (document.getElementsByClassName('shiftTrRow')) {
    table = document.getElementById('resultsTable')
    deleteRow = document.getElementsByClassName('shiftTrRow');
    table.removeChild(deleteRow);       
}
我使用if案例来检查是否有任何行要删除,我添加了一个警报来测试是否有发现的行,这是有效的

当我运行代码时,我在行上收到以下错误:

table.removeChild(deleteRow)

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 
我已经查找了错误代码,它解释说找不到元素,但情况并非如此,因为只有找到元素时才会执行此代码。如果有人知道我做错了什么,或者有更好的方法,我会非常感激

document.getElementsByClassName('shiftTrRow')
                   ^
返回一个数组,即元素数组。您需要在它们上面循环,并单独删除每个元素(但请注意,集合是活动的,并且在删除元素时会缩小)

此外,返回的元素可能根本不是该表中的行,从而导致您收到的
未找到
异常

但是,从表中删除行的最简单方法是:

返回一个数组,即元素数组。您需要在它们上面循环,并单独删除每个元素(但请注意,集合是活动的,并且在删除元素时会缩小)

此外,返回的元素可能根本不是该表中的行,从而导致您收到的
未找到
异常

但是,从表中删除行的最简单方法是:


document.getElementsByClassName
返回元素数组
table.removeChild
要求其参数为DOM元素,而不是数组。

document.getElementsByClassName
返回元素数组
table.removeChild
要求其参数为DOM元素,而不是数组。

文档。getElementsByClassName
将返回一个
节点列表,而不是单个节点。您需要从该列表中选择一个节点,例如
document.getElementsByClassName('shiftthrow')[0]

还要确保该节点实际上是给定表的子节点。下面的代码更安全一些:

if (document.getElementsByClassName('shiftTrRow'))
{    
    deleteRow = document.getElementsByClassName('shiftTrRow')[0];

    if(deleteRow.parentNode)
        deleteRow.parentNode.removeChild(deleteRow);
}

document.getElementsByClassName
将返回一个
NodeList
,而不是单个节点。您需要从该列表中选择一个节点,例如
document.getElementsByClassName('shiftthrow')[0]

还要确保该节点实际上是给定表的子节点。下面的代码更安全一些:

if (document.getElementsByClassName('shiftTrRow'))
{    
    deleteRow = document.getElementsByClassName('shiftTrRow')[0];

    if(deleteRow.parentNode)
        deleteRow.parentNode.removeChild(deleteRow);
}


deleteRow=document.getElementsByClassName('shiftThrow')[0]?刚刚尝试过,但仍然收到相同的错误。[0]的确切用途是什么?8分钟,但没有人建议使用jQuery?哇!我已经用纯JavaScript编写了所有脚本我不确定你是否可以或者如何将jQuery添加到JavaScript中间,虽然如果我没记错的话,你可以在两者之间进行交换,但无论如何我还没有开始学习任何jQuery,因为我只从JavaScript开始,我更愿意先掌握它。那很好,只是通常有人建议放弃所有内容,用jQuery重写整个内容,而不是给出正确的答案;-)deleteRow=document.getElementsByClassName('shiftThrow')[0]?刚刚尝试过,但仍然收到相同的错误。[0]的确切用途是什么?8分钟,但没有人建议使用jQuery?哇!我已经用纯JavaScript编写了所有脚本我不确定你是否可以或者如何将jQuery添加到JavaScript中间,虽然如果我没记错的话,你可以在两者之间进行交换,但无论如何我还没有开始学习任何jQuery,因为我只从JavaScript开始,我更愿意先掌握它。那很好,只是通常有人建议放弃所有内容,用jQuery重写整个内容,而不是给出正确的答案;-)啊,我理解,所以即使使用这种方法,我也不能在不使用循环的情况下删除所有行?仍然添加[0]无法解决此问题,因此肯定在某些地方仍然存在问题。啊,我理解,因此即使使用此方法,我也无法在不使用循环的情况下删除所有行?仍然添加[0]无法解决此问题,因此肯定在某些地方仍然存在问题。有趣的是,我已经硬编码了标题行,我猜标题行应该是第0行。所以我想我需要把0改成1,这样才能得到想要的效果?是的,没错。我只是想修改答案,你可以使用大于0的数字来保留第一行:-)好的,我试过了,它删除了除标题以外的所有行,这是一个完美的解决方案,谢谢!我的代码的下一部分现在不起作用,但我会继续工作,看看是否可以修复它。再次感谢!有趣的是,我已经硬编码了标题行,我猜它应该是第0行。所以我想我需要把0改成1,这样才能得到想要的效果?是的,没错。我只是想修改答案,你可以使用大于0的数字来保留第一行:-)好的,我试过了,它删除了除标题以外的所有行,这是一个完美的解决方案,谢谢!我的代码的下一部分现在不起作用,但我会继续工作,看看是否可以修复它。再次感谢!