Pour chaque méthode de Node.childNodes?

Après avoir fourni une réponse incorrecte concernant la propriété .item() de Node.childNodes pour une question, j'ai inspecté __proto__ des __proto__ d'origine retournés d'un élément de form et forEach trouvé une méthode pour forEach méthode.

La méthode forEach de Node.childNodes n'est pas documentée dans la spécification de NodeList , dans Methods at MDN ou Interface NodeList , et ne semble pas être mentionné dans Iterate a NodeList using forEach méthode ou pages liées à cette Question; Bien qu'il semble disponible dans Chromium 50.

La méthode n'est-elle disponible que dans des versions relativement récentes de Chrome / Chromium? Si oui, est-ce que cela est documenté?

Existe-t-il des documents relatifs à la méthode forEach() de Node.childNodes ?


 document.querySelector("form").addEventListener("submit", function(e) { e.preventDefault(); var form = e.target; form.childNodes.forEach(function(el) { if (el.tagName === "INPUT" && el.type !== "submit") snippet.log("name:" + el.name + ", value:" + el.value) }); }); 
 <form> <input type="text" name="firstName" value="The first name"> <input type="text" name="lastName" value="The last name"> <input type="email" name="emailAddress" value="[email protected]"> <br> <input type="submit" value="Submit"> </form> <!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 

DOM4 définit maintenant NodeList comme iterable :

 iterable<Node>; 

Selon le projet d'IDL , cela signifie

Une interface peut être déclarée itérative en utilisant une déclaration itérative (correspondant à Iterable ) dans le corps de l'interface.

 iterable<value-type>; iterable<key-type, value-type>; 

Les objets implémentant une interface qui est déclarée comme un support itératif sont itérés pour obtenir une séquence de valeurs.

Remarque : Dans la liaison du langage ECMAScript, une interface itérative aura des "entrées", "pour tout", "clés", "valeurs" et @@ iterator propriétés sur son objet prototype d'interface .

Si un paramètre de type unique est donné, l'interface possède un itérateur de valeurs et fournit des valeurs du type spécifié.

La méthode n'est-elle disponible que dans des versions relativement récentes de Chrome / Chromium? Si oui, est-ce que cela est documenté?

Oui, cela est nouveau dans DOM4, donc pas largement disponible.

Existe-t-il des documents relatifs à la méthode forEach () de Node.childNodes?

Voir Ajouter une prise en charge de [ArrayClass] et utilisez cette option sur NodeList sur le curseur de bug de Chromium:

À partir de https://bugs.webkit.org/show_bug.cgi?id=81573

http://dom.spec.whatwg.org/#interface-nodelist

Spécifications DOM4 NodeList possède Array.prototype dans sa chaîne de prototypes.

Un peu plus de fond pour celui-ci. [ArrayClass] nous permet de faire des choses comme document.querySelectorAll ('. Foo'). Pour chaque … Le correctif de bugs.webkit.org a un indicateur d'exécution parce qu'il n'est pas clair si cela sera encore possible.

Historiquement, ces objets de type tableau n'incluaient pas ces méthodes du prototype de tableau, ce qui a entraîné un code comme Array.prototype.forEach.call(nodeList, function() { ... }) . Ceci est maintenant destiné à changer dans DOM4.