按类名删除表行-Javascript
我已经浏览了很多关于这段简单代码的论坛帖子。并尝试了许多变化和方法,但毫无效果 我有一个基于数据库查询构建表的脚本。我将其限制为10个结果,并提供前进和后退按钮以从数据库转到其他结果。当您按下“下一步”按钮时,我需要它删除所有当前表行,以便它可以使用查询的新结果重新创建它们。我正在使用以下代码删除行按类名删除表行-Javascript,javascript,dom,Javascript,Dom,我已经浏览了很多关于这段简单代码的论坛帖子。并尝试了许多变化和方法,但毫无效果 我有一个基于数据库查询构建表的脚本。我将其限制为10个结果,并提供前进和后退按钮以从数据库转到其他结果。当您按下“下一步”按钮时,我需要它删除所有当前表行,以便它可以使用查询的新结果重新创建它们。我正在使用以下代码删除行 if (document.getElementsByClassName('shiftTrRow')) { table = document.getElementById('resultsTa
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的数字来保留第一行:-)好的,我试过了,它删除了除标题以外的所有行,这是一个完美的解决方案,谢谢!我的代码的下一部分现在不起作用,但我会继续工作,看看是否可以修复它。再次感谢!