Internet explorer兼容性?每个函数的Javascript

Internet explorer兼容性?每个函数的Javascript,javascript,internet-explorer,Javascript,Internet Explorer,const items=document.queryselectoral(“.accordion a”); 函数toggleAccordion(){ this.classList.toggle('active'); this.nextElementSibling.classList.toggle('active'); } items.forEach(item=>item.addEventListener('click',toggleAccordion)) 错误:{“消息”:“语法错误”,“文件名

const items=document.queryselectoral(“.accordion a”);
函数toggleAccordion(){
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('active');
}
items.forEach(item=>item.addEventListener('click',toggleAccordion))
错误:{“消息”:“语法错误”,“文件名”:
“”,“行号”:19,“行号”:21}

胖箭头函数是

改用ES5经典函数

items.forEach(function(item) { item.addEventListener('click', toggleAccordion) });
IE不支持节点列表上的和
forEach
querySelectorAll
的返回值是一个节点列表

我们可以使用和polyfill
forEach
将es6语法(如箭头函数)传输到es5,以使其与IE 11兼容

Polyfill:

var ctors = [typeof NodeList !== "undefined" && NodeList, typeof HTMLCollection !== "undefined" && HTMLCollection];     
        for (var n = 0; n < ctors.length; ++n) {     
            var ctor = ctors[n];     
            if (ctor && ctor.prototype && !ctor.prototype.forEach) {        
                ctor.prototype.forEach = Array.prototype.forEach;     
                if (typeof Symbol !== "undefined" && Symbol.iterator && !ctor.prototype[Symbol.iterator]) {     
                    Object.defineProperty(ctor.prototype, Symbol.iterator, {     
                        value: Array.prototype[Symbol.itereator],     
                        writable: true,     
                        configurable: true     
                    });     
                }     
            }     
        } 
var items = document.querySelectorAll(".accordion a");

function toggleAccordion() {
  this.classList.toggle('active');
  this.nextElementSibling.classList.toggle('active');
}

items.forEach(function (item) {
  return item.addEventListener('click', toggleAccordion);
});

错误,错误消息是什么?您需要与哪些版本的Internet explorer兼容?(如果您不指定,我们将假设IE11,因为这是唯一仍受支持的版本,但清楚这些事情是有帮助的)IE(甚至IE11)不支持Javascript的ES6语法。这包括
const
forEach
。您需要至少更改代码的这两部分。IE控制台将此错误记录为“SCRIPT1002:Syntax error”,并将其指向forEach函数。同样是IE11。@Spudley IE11识别
const
关键字,但将其视为
var
(块作用域/常量未“创建”)。尝试了此操作,但internet explorer正在记录错误“第9行错误:对象不支持属性或方法'forEach'”,
for(项目的var项)如何
?@hateScala节点列表在IE中不支持
forEach
方法。您必须将列表对象转换为数组,或者使用常规的
for
循环,而不是
forEach
for..of
也不受支持)。ES5语法表示支持for in。但是当。。在
中,它表示对象不支持事件侦听器。但在其他浏览器中仍然有效