NodeList.prototype.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

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

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 IDL
The definition of 'forEach' in that specification.
Candidate Recommendation Defines forEach on iterable declarations

Browser compatibility

BCD tables only load in the browser

See also