javascript - indexOf 不是函数,无法在数组中找到元素的索引

标签 javascript html arrays dom

<分区>

我有一个包含 HTML 元素的数组(我用 querySelectorAll() 填充它),我试图在该数组中找到元素的索引,但控制台给出了错误:

Uncaught TypeError: rows.indexOf is not a function

我用它来用所需的 HTML 元素填充数组:

rows = document.querySelectorAll("#selectableTableBody > tr");

找到索引:

document.getElementById("tableItem_10087528").onclick = function (e) { console.log(rows.indexOf(this)); }

这是我在控制台中测试的图像(这没有意义): image captured from Chrome's console

值得注意的是,这些元素是用 javascript 生成的,然后使用 querySelectorAll() 放入数组中 这是一个jsfiddle如果你想检查整个事情

最佳答案

I have an array that contains HTML elements(I filled it with querySelectorAll())

不,你不知道,这就是问题所在。 :-) querySelectorAll 返回一个 NodeList ( MDN | spec ),而不是数组。

您可以通过多种方式将其转换为数组:

rows = Array.from(document.querySelectorAll(/*...*/));

或(在 NodeList 可迭代的最新环境中):

rows = [...document.querySelectorAll(/*...*/)];

或在旧环境中:

rows = Array.prototype.slice.call(document.querySelectorAll(/*...*/));

可重复性:This answer讨论了在数组可迭代( native 或由于 polyfill)但 NodeList 不是(还)的平台上的 polyfilling NodeList 迭代能力。

关于javascript - indexOf 不是函数,无法在数组中找到元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628238/

相关文章:

javascript - 如何使用jquery取消选择选项

java - 在 Java 中声明数组及其名称的不同方式

java - 如果语句没有调用正确的字符串或 boolean 值

javascript - 为什么 uglify 不能处理 AngularJS 内容?

javascript - MVC 中全局状态变量存储在哪里以及如何传递它?

javascript - Innerhtml 在页面加载时显示而不是在点击时显示

c++ - 从二维数组中的给定索引中找到对角线元素的总和

javascript - 字符串 JavaScript 中的常见字符数

javascript - AngularGrid 库在某些特殊情况下会产生空白

javascript - 火狐操作系统 : How to implement mp4 and m3u8 streaming