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上使用它。
希望可以帮助别人。