Javascript - forEach()循环不能在IE11上运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript - forEach()循环不能在IE11上运行相关的知识,希望对你有一定的参考价值。

forEach循环应该在IE11中工作并显示

Object不支持属性或方法'forEach'。

它应该工作,因为它是ECMAScript-5函数和IE11 supports it

但是,我的代码不起作用:

var alltable = document.querySelectorAll('*[id^="table_"]'); //Select all elements with the id starting by "table_"
    alltable.forEach(function(element) {
                // Do some code
                });

知道为什么吗?

答案

好吧,我自己

forEach()实际上是在IE11上工作,只要小心你如何调用它。

querySelectorAll()是一个返回NodeList的方法。在Internet Explorer上,foreach()仅适用于Array对象。 (它与NodeList一起使用ES6,not supported by IE11)

为了解决这个问题,有些人会建议使用polyfill,它可以很好地工作,但你也可以使用slice.call()方法将NodeList转换为数组:(Explained here)

var alltable = document.querySelectorAll('*[id^="table_"]'); //Select all elements with the id starting by "table_"
var alltableArray= Array.prototype.slice.call(alltable);
    alltableArray.forEach(function(element) {
                // Do some code
                });

要么:

var alltable = Array.prototype.slice.call(document.querySelectorAll('*[id^="table_"]')); //Select all elements with the id starting by "table_"
    alltable.forEach(function(element) {
                // Do some code
                });

总结一下:确保在Array对象而不是NodeList上使用它。

希望可以帮助别人。

以上是关于Javascript - forEach()循环不能在IE11上运行的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析

JavaScript 循环中调用异步函数的三种方法,及为什么 forEach 无法工作的分析

JavaScript中 forEach map 方法 无法跳出循环问题及解决方案

forEach循环中的Javascript API队列

JavaScript 的 foreach 用不了 break/continue?同样写法下 for 循环也不行

JavaScript 的 foreach 用不了 break/continue?同样写法下 for 循环也不行