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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With