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.
thisArg
Optional
- Value to use as
this
when 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,