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

nodeList.forEach(callback[, thisArg]);

Parameters

callback
Function to execute for each element, eventually taking 3 arguments:
currentValue
The current element being processed in the NodeList.
currentIndex
The index of the current element being processed in the NodeList.
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(currentValue, currentIndex, listObj) { 
    console.log(currentValue + ', ' + currentIndex + ', ' + 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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support511650 No3810
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support5151 ?50 ?105.0

See also

Document Tags and Contributors

Last updated by: ExE-Boss,