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.
thisArgOptional- Value to use as
thiswhen executingcallback.
Return value
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
Tags:
Contributors to this page:
gushecht,
christiansany,
JorisW,
Makyen,
Gabrys1,
destin.moulton,
valtlai,
jrencz,
chrisbruford,
teoli
Last updated by:
gushecht,