NodeList.prototype.forEach()

Il metodo forEach() dell'interfaccia NodeList chiama il callback fornito nel parametro una volta per ogni coppia di valori nell'elenco, in ordine di inserimento.

Sintassi

NodeList.forEach(callback[, thisArg]);

Parametri

callback
Funzione da eseguire per ciascun elemento, eventualmente con 3 argomenti:
currentValue
L'elemento corrente in elaborazione nella NodeList.
currentIndex
L'indice dell'elemento corrente in fase di elaborazione nella NodeList.
listObj
La NodeList a cui viene applicato forEach().
thisArg Optional
Valore da utilizzare come this quando viene eseguito callback.

Valore di ritorno

undefined.

Eccezioni

Nessuna.

Esempio

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'
);

ritorna:

[object HTMLParagraphElement], 0, myThisArg
[object Text], 1, myThisArg
[object HTMLSpanElement], 2, myThisArg

Polyfill

Questo polyfill aggiunge compatibilità a tutti i browser che supportano 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);
        }
    };
}

OPPURE

if (window.NodeList && !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}

Il comportamento sopra riportato indica il numero di browser che implementa effettivamente NodeList.prototype.forEach (Chrome, ad esempio).

Specifiche

Specifica Stato Commento
Web IDL
The definition of 'forEach' in that specification.
Candidate Recommendation Definisce forEach sulle dichiarazioni iterable

Compatibilità con i browser

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
forEachChrome Full support 51Edge Full support 16Firefox Full support 50IE No support NoOpera Full support 38Safari Full support 10WebView Android Full support 51Chrome Android Full support 51Firefox Android Full support 50Opera Android Full support 41Safari iOS Full support 10Samsung Internet Android Full support 5.0

Legend

Full support  
Full support
No support  
No support

Vedi anche