Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SCRIPT438 Error in Internet Explorer 11

Tags:

I've been working on JavaScript lately, and everything was fine until I opened my page in IE11. as per Mozilla website .forEach is supported from IE9.

This is the error I got.

SCRIPT438: Object doesn't support property or method 'forEach'

and this is the code.

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!");
        };
    });

I tried polyfill, but to my amusement, Array has a forEach in IE11.

Then where I'm going wrong?

PS: This works fine in Chrome.

like image 406
Prajwal Avatar asked Dec 25 '16 13:12

Prajwal


1 Answers

Finally mystery solved.

Apparently, IE9 and above supports Array.forEach but not for NodeList, which querySelector returns. I tried Array.from() to no avail as it requires ES6 or use ES6-shim.

All I had to do was to convert from nodeList to Array, and I did by this.

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

as appeared in question In Javascript, what is the best way to convert a NodeList to an array

like image 137
Prajwal Avatar answered Sep 28 '22 06:09

Prajwal