NodeList.forEach()

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

nodeList.forEach(callback);
nodeList.forEach(callback, thisArg);

Parameters

callback
Function to execute for each element, eventually taking 3 arguments:
currentValue
The current element being processed in the array.
currentIndex
The index of the current element being processed in the array.
listObj
The NodeList object that forEach() is being applied to.
thisArg Optional
Value to use as this when executing callback.

Return value

undefined.

Exceptions

None.

Example

var node = document.createElement("div");
var kid1 = document.createElement("p");
var kid2 = document.createTextNode("hey");
var kid3 = document.createElement("span");
node.appendChild(kid1);
node.appendChild(kid2);
node.appendChild(kid3);
var list = node.childNodes;
list.forEach( 
  function(value, key, listObj) { 
    console.log(value + ' ' + key + "/" + this); 
  },
  "myThisArg"
);

results in:

[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);
        }
    };
}

Specifications

Specification Status Comment
DOM
The definition of 'NodeList' in that specification.
Living Standard Defines NodeList as iterable<Node>
Web IDL
The definition of 'forEach' in that specification.
Candidate Recommendation Defines forEach on iterable declarations

Browser Compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 51 50 (50) No support 38 10 (maybe prior)
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support (Yes) 50.0 (50) No support (Yes) 10 51

See also

Document Tags and Contributors

 Last updated by: gushecht,