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.