1

我试图了解是否可以使用数组迭代器(如 .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

我曾尝试使用 .forEach() 迭代器,但无法弄清楚如何在 forEach() 迭代器中获取数组索引,因为我需要定义在哪个按钮上运行 addEvent 函数。

4

1 回答 1

2

button在你只发布了一个链接的代码中,是一个 HTMLCollection,所以你不能用它“本机”做很多事情

但是,使用Array.from您可以将其“转换”为数组,然后使用Array#forEach方法 - 因此,您的代码将是

Array.from(button).forEach(function(btn) {
    addEvent(btn);
});

或者,甚至更好

Array.from(button).forEach(addEvent);

如果您正在处理 Internet Exploder,则需要 PolyfillArray.from

如果您需要处理版本 9 之前的 Internet Exploder,则需要 PolyfillArray.prototype.forEach

我链接到的 MDN 文档对两者都有 Polyfills

于 2019-03-30T02:58:48.347 回答