Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript indexOf不是一个函数,可以';在数组中找不到元素的索引_Javascript_Html_Arrays_Dom - Fatal编程技术网

Javascript indexOf不是一个函数,可以';在数组中找不到元素的索引

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){

我有一个包含HTML元素的数组(我用
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-啊,我现在明白了。:-)