数组中的IndexOf元素
IndexOf element in array
我试图从元素数组中获取索引。
var arr = document.getElementsByClassName('class'); //3 elements
console.log(arr);
output// [div.class.selected, div.class, div.class, item: function, namedItem: function]
var selected = document.getElementsByClassName('selected');
var selected_id = arr.indexOf(selected[0]);
最后一行代码给了我一个错误Uncaught TypeError: undefined is not a function
。我也尝试添加toString()
和搜索,但出现了相同的错误。
这是因为arr
是一个(活动)NodeList而不是数组;我想你想要的是:
console.log([].indexOf.call(arr, selected[0]));
var arr = document.getElementsByClassName('class');
var selected = document.getElementsByClassName('selected');
var selected_id = [].indexOf.call(arr, selected[0]);
console.log(selected_id);
<div class="class"></div><div class="class"></div><div class="class selected"></div><div class="class"></div>
线路:
var selected_id = [].indexOf.call(arr, selected[0]);
使用本机Array.prototype.indexOf()
方法,提供arr
作为this
(基本上使用arr
作为调用该方法的数组),提供selected[0]
作为要传递给该方法的参数,因此它在某种程度上是,正如您自己所称:
var selected_id = arr.indexOf(selected[0]);
但是以识别indexOf()
方法对NodeList
对象不可用的方式进行调用(以合法的方式调用它,从而防止错误)。
参考文献:
- CCD_ 11
document.getElementsByClassName()
Function.prototype.call()
getElementsByClassName
不返回数组,而是返回HTMLCollection
。因此,它没有像indexOf
那样的数组方法。您需要显式调用this
值为HTMLCollection
的数组方法,如下所示:
var selected_id = Array.prototype.indexOf.call(arr, selected[0]);
这是因为document.getElementsByClassName('class')
不返回Array
,而是返回类似数组的对象NodeList
。您可以使用将类似数组的对象转换为数组
var elements = document.getElementsByClassName('class');
var arr = Array.prototype.slice.call(elements);
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 如何获取
中的元素的“indexOf”?(jquery).
- 数组中的IndexOf元素
- 当数组元素是对象(javascript)时,indexOf()
- indexOf忽略了数组中的元素
- Javascript .indexOf 表示 2 个相等的元素不相等
- jquery元素中的Javascript indexof
- 通过getElementsByTagName为HTML选择元素使用indexOf
- js 数组中的 IndexOf 元素使用真值函数,使用下划线或 jquery
- 匹配数组元素的indexOf
- 如何在jQuery数组中找到indexOf元素
- 获取数组中元素的下一个位置,而不是首先使用indexOf
- 查找数组元素的索引,而不使用内置indexOf函数