2016-12-25 1 views
1

В последнее время я работаю над JavaScript, и все было нормально, пока я не открыл свою страницу в IE11. согласно Mozilla website.forEach поддерживается IE9.Ошибка SCRIPT438 в Internet Explorer 11

Это ошибка, которую я получил.

SCRIPT438: Объект не поддерживает свойство или метод 'Foreach'

и это код.

var link1 = document.querySelectorAll("nav a"); 
    var textbox = document.getElementById("OutputWindow"); 
    link1.forEach(function (element) { 
     textbox.innerHTML += "<br/>" + element + "\n"; 
     element.onclick = function() { 
      alert("Hello!"); 
      console.log("hello!"); 
      confirm("Hello!"); 
     }; 
    }); 

Я попытался polyfill, но к моему развлечению, Array имеет forEach в IE11.

Тогда, где я ошибаюсь?

PS: Это прекрасно работает в Chrome.

+0

Пожалуйста, прочтите [Как принимать в работу ответ?] (Http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer -work) – Quentin

+0

@Quentin Я не могу принять свой собственный ответ в течение двух дней. Или так говорит ошибка. – Prajwal

+0

Так что подождите пару дней. Просто не редактируйте заголовок вопроса, чтобы включить слово «Solved». – Quentin

ответ

3

Окончательно тайна решена.

По-видимому, IE9 и выше поддерживает Array.forEach, но не для NodeList, который querySelector возвращается. Я пробовал Array.from() безрезультатно, так как требуется ES6 или использовать ES6-shim.

Все, что мне нужно было сделать, это конвертировать из nodeList в Array, и я сделал это.

Array.prototype.slice.call(document.querySelectorAll("nav a"), 0); 

, как появился вопрос In Javascript, what is the best way to convert a NodeList to an array

+0

И все «отлично» работает в других браузерах? Это не должно быть возможным. – Teemu

+0

Видимо да. Я пробовал с Chrome и IE. – Prajwal

+0

Хм ... Кажется, что-то недавно изменилось. ['document.querySelectorAll'] (https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll), используемый для возврата [HTMLCollection] (https://developer.mozilla.org/ en-US/docs/Web/API/HTMLCollection) (который не поддерживает 'forEach'), но в настоящее время он возвращает [NodeList] (https://developer.mozilla.org/en-US/docs/Web/ API/NodeList). – Teemu