作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种面向 future 的方法来遍历 NodeList(即来自 element.querySelectorAll(selector)
)以及跨浏览器兼容。以前我一直在使用 ES6 Spread 功能,但是 IE 不支持 spreading 所以我用了一个 shim 来代替它。我觉得这有点矫枉过正且效率低下。然后我遇到了 hack Array.prototype.forEach.call
。它有效,但我觉得很臭。
遍历 NodeList 的最佳方法是什么?
我偏向于向后兼容和干净的气味代码,但如果您的回答也适用于以下任何其他标准,那将不胜感激。
我看过JavaScript iterate through NodeList ,其中介绍了几种方法。但是,无需担心可读性、兼容性等问题。只要它有效即可。
我遇到的一些方法是:
const elems = document.querySelectorAll('img');
[].forEach.call(elems, function (o) { console.log(o) });
[...elems].foreach(function (o) { console.log(o) });
for (var i = 0; i < elems.length; i++) {
console.log(elems[i]);
}
for (var i = elems.length - 1; i >= 0; i--) {
console.log(elems[i]);
}
// User-defined
var forEach = function (array, callback, scope) {
for (var i = 0; i < array.length; i++) {
callback.call(scope, i, array[i]);
}
};
forEach(elems, function (index, value) {
console.log(index, value);
});
最佳答案
我推荐使用 MDN 的 Array.from
polyfill
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Polyfill
Array.from(nodeList).forEach(node => {})
关于javascript - 遍历 NodeList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291030/
我是一名优秀的程序员,十分优秀!