@Muvka

Как исправить TypeError: Объект не поддерживает свойство или метод «forEach»?

Пытаюсь отладить на сафари 9 мобильной. Т.к. для винды нет возможностей тестирования, смотрю IE 11. Сайт выглядит и там и там одинаково (корзина вся на js построена). Там вот такая ошибка есть в консоли: TypeError: Объект не поддерживает свойство или метод "forEach". Посмотрел поддержку forEach: она отличная. Что посоветуете?
  • Вопрос задан
  • 3257 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Посмотрел поддержку forEach: она отличная.

Это другой forEach - принадлежащий Array.prototype. У вас ошибка возникает из-за отсутствия NodeList.prototype.forEach.

Что можно сделать:

  • Найти/написать самостоятельно и добавить полифилл
  • Использовать forEach массива:

    Array.prototype.forEach.call(items, function(n) {
      // ...
    });

  • Использовать обычный цикл со счётчиком:

    for (var i = 0; i < items.length; i++) {
      // ...
    }

  • В IE не заработает, а вот в Safari 9, говорят, должно:

    for (var n of items) {
      // ...
    }

Ответ написан
rockon404
@rockon404
Frontend Developer
Скорей всего вы пытаетесь использовать NodeList.prototype.forEach(), который в IE не поддерживается.
Можно использовать полифилл.
Можно для перебора NodeList использовать метод массива:
var list = document.querySelectorAll( 'input[type=checkbox]' );
Array.prototype.forEach.call(list, function (item) {
  // do something
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 15:52
3000 руб./за проект
25 нояб. 2024, в 15:43
1500 руб./за проект