This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.
The forEach() method of the NodeList interface calls the callback given in parameter once for each value pair in the list, in insertion order.
forEach(callback) forEach(callback, thisArg)
callbackA function to execute on each element of someNodeList. It accepts 3 parameters:
currentValueThe current element being processed in someNodeList.
currentIndex OptionalThe index of the currentValue being processed in someNodeList.
listObj OptionalThe someNodeList that forEach() is being applied to.
thisArg OptionalValue to use as this when executing callback.
const node = document.createElement("div");
const kid1 = document.createElement("p");
const kid2 = document.createTextNode("hey");
const kid3 = document.createElement("span");
node.appendChild(kid1);
node.appendChild(kid2);
node.appendChild(kid3);
const 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
| Specification |
|---|
| DOM> # interface-nodelist> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
forEach |
51 | 16 | 50 | 38 | 10 | 51 | 50 | 41 | 10 | 5.0 | 51 | 10 |
© 2005–2025 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