Web/API/NodeList/forEach

From Get docs

The forEach() method of the NodeList interface calls the callback given in parameter once for each value pair in the list, in insertion order.

Syntax

someNodeList.forEach(callback[, thisArg]);

Parameters

callback
A function to execute on each element of someNodeList. It accepts 3 parameters:
currentValue
The current element being processed in someNodeList.
currentIndex Optional
The index of the currentValue being processed in someNodeList.
listObj Optional
The someNodeList that forEach() is being applied to.
thisArg Optional
Value to use as this when executing callback.

Return value

undefined.

Example

let node = document.createElement("div");
let kid1 = document.createElement("p");
let kid2 = document.createTextNode("hey");
let kid3 = document.createElement("span");

node.appendChild(kid1);
node.appendChild(kid2);
node.appendChild(kid3);

let list = node.childNodes;

list.forEach( 
  function(currentValue, currentIndex, listObj) { 
    console.log(currentValue + ', ' + currentIndex + ', ' + this); 
  },
  'myThisArg'
);

The above code results in the following:

[object HTMLParagraphElement], 0, myThisArg
[object Text], 1, myThisArg
[object HTMLSpanElement], 2, myThisArg

Polyfill

This polyfill adds compatibility to all Browsers supporting ES5:

if (window.NodeList && !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = function (callback, thisArg) {
        thisArg = thisArg || window;
        for (var i = 0; i < this.length; i++) {
            callback.call(thisArg, this[i], i, this);
        }
    };
}

OR

if (window.NodeList && !NodeList.prototype.forEach) {
   NodeList.prototype.forEach = Array.prototype.forEach;
}

The above behavior is how many browsers actually implement NodeList.prototype.forEach() (Chrome, for example).

Specifications

Specification Status Comment
Web IDLThe definition of 'forEach' in that specification. Candidate Recommendation Defines forEach on iterable declarations

Browser Compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
forEach Chrome

Full support 51

Edge

Full support 16

Firefox

Full support 50

IE

No support No

Opera

Full support 38

Safari

Full support 10

WebView Android

Full support 51

Chrome Android

Full support 51

Firefox Android

Full support 50

Opera Android

Full support 41

Safari iOS

Full support 10

Samsung Internet Android

Full support 5.0

Legend

Full support  
Full support
No support  
No support


See also