Javascript indexOf不是一个函数,可以';在数组中找不到元素的索引
我有一个包含HTML元素的数组(我用Javascript indexOf不是一个函数,可以';在数组中找不到元素的索引,javascript,html,arrays,dom,Javascript,Html,Arrays,Dom,我有一个包含HTML元素的数组(我用querySelectorAll()填充了它),我试图在该数组中查找元素的索引,但控制台给出了错误: 未捕获类型错误:rows.indexOf不是函数 我使用它用所需的HTML元素填充数组: rows=document.querySelectorAll(#selectableTableBody>tr”) 下面是查找索引的步骤: document.getElementById(“tableItem_10087528”).onclick=function(e){
querySelectorAll()
填充了它),我试图在该数组中查找元素的索引,但控制台给出了错误:
未捕获类型错误:rows.indexOf不是函数
我使用它用所需的HTML元素填充数组:
rows=document.querySelectorAll(#selectableTableBody>tr”)代码>
下面是查找索引的步骤:
document.getElementById(“tableItem_10087528”).onclick=function(e){
log(rows.indexOf(this));
}
下面是我在控制台中测试的图像(这没有意义):
值得注意的是,这些元素是用javascript生成的,然后使用querySelectorAll()
如果你想检查整件事,这里有一个
我有一个包含HTML元素的数组(我用querySelectorAll()填充了它)
不,你没有,这就是问题所在。:-)querySelectorAll
返回一个NodeList
(|),而不是一个数组
可以通过以下几种方式将其转换为数组:
rows = Array.from(document.querySelectorAll(/*...*/));
或者(在最新的环境中,NodeList
是可移植的):
或者在旧环境中:
rows = Array.prototype.slice.call(document.querySelectorAll(/*...*/));
可重用性:讨论在阵列可重用(本机或多亏了可重用)但节点列表
尚未可用的平台上,多填充节点列表
的可重用性
我有一个包含HTML元素的数组(我用querySelectorAll()填充了它)
不,你没有,这就是问题所在。:-)querySelectorAll
返回一个NodeList
(|),而不是一个数组
可以通过以下几种方式将其转换为数组:
rows = Array.from(document.querySelectorAll(/*...*/));
或者(在最新的环境中,NodeList
是可移植的):
或者在旧环境中:
rows = Array.prototype.slice.call(document.querySelectorAll(/*...*/));
可重用性:讨论在阵列可重用(本机或多亏了可重用)但节点列表
尚未可用的平台上,多填充节点列表
的可重用性
未捕获类型错误:rows.indexOf不是函数
出现此错误是因为您正在通过节点列表而不是数组调用.indexOf()
,因为将返回节点列表而不是数组
您可以使用从该节点列表/集合获取数组
:
rows = Array.from(document.querySelectorAll("#selectableTableBody > tr"));
演示:
这是你的
未捕获类型错误:rows.indexOf不是函数
出现此错误是因为您正在通过节点列表而不是数组调用.indexOf()
,因为将返回节点列表而不是数组
您可以使用从该节点列表/集合获取数组
:
rows = Array.from(document.querySelectorAll("#selectableTableBody > tr"));
演示:
这是您的。返回,而不是数组
你需要使用
rows=Array.from(document.queryselectoral(#selectableTableBody>tr));
返回,而不是数组
你需要使用
rows=Array.from(document.queryselectoral(#selectableTableBody>tr));
这是因为querySelectorAll()的返回是一个类似数组的对象(具有length属性的对象),而不是数组。您需要使用array.from(rows)将其转换为数组。这是因为querySelectorAll()的返回是一个类似数组的对象(具有长度属性的对象)而不是数组。您需要使用array.from(rows)将其转换为array。在最后一行设置行之前,您要运行几次fillSelect,不是吗?这是因为结果不是一个数组,而是一个节点列表。在最后一行设置行之前,您运行了几次fillSelect,不是吗?这是因为结果不是一个数组,而是一个节点列表看看MDN页面上关于NodeList
:不是你,而是@Elias,我的评论在你编辑文档添加链接之前;-)@enguerran-啊,我现在明白了。:-)看看关于NodeList
的MDN页面:不是你,而是@Elias,我的评论在你编辑文档添加链接之前;-)@enguerran-啊,我现在明白了。:-)