Javascript-forEach()循环不适用于IE11

时间:2019-04-18 08:12:17

标签: javascript internet-explorer foreach internet-explorer-11 ecmascript-5

forEach循环应该可以在IE11和diplay中运行

  

对象不支持属性或方法“ 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
                });

知道为什么吗?

1 个答案:

答案 0 :(得分:-1)

好吧,

forEach()实际上正在IE11上运行,请谨慎使用它。

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

要解决此问题,有些人会建议使用polyfill,这可能会很好用,但您也可以使用slice.call()方法将(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
                });

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

希望可以帮助某人。