我试图了解是否可以使用数组迭代器(如.forEach())来完成与for循环相同的功能。
我试图了解javascript事件监听器,并编写了一些基本代码来帮助我学习
我有多个div,其类名为“按钮”。
我具有要使用for循环实现的功能,但无法弄清楚如何使用迭代器执行相同的功能。有可能吗?
// Can I use an Array Iterator to do the same operation here
for (var i = 0; i < button.length; i++) {
addEvent(button[i]);
}
查看JSFiddle of all my code here
我尝试使用.forEach()迭代器,但是由于需要定义在哪个按钮上运行addEvent函数,因此无法弄清如何在forEach()迭代器中获取数组索引。
答案 0 :(得分:2)
button
,在代码中您仅发布了指向的链接,它是HTMLCollection,因此“本机”处理不了什么
但是,使用Array.from可以将其“转换”为数组,然后使用Array#forEach方法-因此,您的代码将是
Array.from(button).forEach(function(btn) {
addEvent(btn);
});
或者甚至更好
Array.from(button).forEach(addEvent);
如果您正在使用Internet Exploder,则需要Array.from
的Polyfill
如果您需要使用版本9之前的Internet Exploder,则需要Array.prototype.forEach
的Polyfill
我链接到的MDN文档均具有Polyfills