Javascript - циклы forEach () не работают на IE11 - PullRequest
0 голосов
/ 18 апреля 2019

forEach циклы должны работать в IE11 и diplay

Объект не поддерживает свойство или метод forEach.

Должно работать, так как это функция ECMAScript-5 и IE11 поддерживает ее .

Однако мой код здесь не работает:

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

Есть идеи, почему?

1 Ответ

0 голосов
/ 18 апреля 2019

Ну сам,

forEach () фактически работает на IE11 , просто будьте осторожны с тем, как вы его называете.

querySelectorAll () - это метод, который возвращает NodeList . А в Internet Explorer foreach () работает только с объектами Array . (Работает с NodeList с ES6, не поддерживается IE11) .

Чтобы это исправить, некоторые посоветовали бы полифил, который мог бы отлично работать, но вы также можете просто преобразовать свой NodeList в массив с помощью метода slice.call (): (Объяснено здесь)

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.

Надеюсь, что это может кому-то помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...