我尝试从元素数组中获取索引.
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]);
Run Code Online (Sandbox Code Playgroud)
最后一行代码给出了一个错误Uncaught TypeError: undefined is not a function.我也尝试添加toString()和搜索,但同样的错误.
这是因为arr(实时)NodeList不是数组; 你想要的是,我想:
console.log([].indexOf.call(arr, selected[0]));
Run Code Online (Sandbox Code Playgroud)
var arr = document.getElementsByClassName('class');
var selected = document.getElementsByClassName('selected');
var selected_id = [].indexOf.call(arr, selected[0]);
console.log(selected_id);Run Code Online (Sandbox Code Playgroud)
<div class="class"></div><div class="class"></div><div class="class selected"></div><div class="class"></div>Run Code Online (Sandbox Code Playgroud)
这条线:
var selected_id = [].indexOf.call(arr, selected[0]);
Run Code Online (Sandbox Code Playgroud)
使用本机Array.prototype.indexOf()方法,供给arr作为this(基本上使用arr作为该方法被称为数组),提供selected[0]作为参数传递给方法,所以它有点被应用为你自己把它称为:
var selected_id = arr.indexOf(selected[0]);
Run Code Online (Sandbox Code Playgroud)
但它是否以一种识别indexOf()方法不可用的方式NodeList(以合法的方式调用它,从而防止错误).
参考文献:
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |