dom / latest / nodelist / foreach.html /

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

No specification found

No specification data found for api.NodeList.forEach.
Check for problems with this page or contribute a missing spec_url to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
forEach
51
16
50
No
38
10
51
51
50
41
10
5.0

See also

© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach