2016-03-19 23 views
12

Nach an incorrect answer bezüglich der .item() Eigenschaft Node.childNodes für eine Frage Bereitstellung inspizierte I __proto__ der zurück childNodes ein form Element und ein forEach Verfahren gefunden.für jede Methode von Node.childNodes?

forEach Die Methode des Node.childNodes ist in der Beschreibung von NodeList, in Methods at MDN oder Interface NodeList, nicht dokumentiert und scheint nicht auf diese Frage in Iterate a NodeList using forEach method oder Seiten verknüpft erwähnt zu werden; obwohl es in Chrom 50 erscheint.

Ist die Methode nur bei relativ neuen Versionen von Chrom/Chrom verfügbar? Wenn ja, ist dies dokumentiert?

Gibt es Unterlagen bezüglich der forEach() Methode von 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>

Antwort

9

DOM4 nun NodeList als iterable definiert:

iterable<Node>; 

Nach der IDL draft, das heißt

Ein interface kann iterable sein durch die Verwendung eines iterable Erklärung (Matching Iterable) im Körper der Schnittstelle deklariert werden.

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

Objects eine Schnittstelle implementiert, die als iterable deklariert ist Träger eine Sequenz von Werten zu erhalten, iteriert wird.

Hinweis: In der ECMAScript-Sprachbindung, eine Schnittstelle, die iterable ist, wird „Einträge“, „forEach“, „Schlüssel“, „Werte“ und @@iterator Eigenschaften auf seine interface prototype object haben.

Wenn ein einzelner Typ-Parameter gegeben ist, dann weist die Schnittstelle einen Wert Iterator und stellt Werte des angegebenen Typs.

5

Ist die Methode nur bei relativ neueren Versionen von Chrome/Chromium? Wenn ja, ist dies dokumentiert?

Ja, das ist neu in DOM4, also nicht weit verbreitet.

Gibt es Dokumentation bezüglich der forEach() - Methode von Node.childNodes?

Add support for [ArrayClass] and use that on NodeList auf dem Chromium Bug-Tracker Siehe:

Von https://bugs.webkit.org/show_bug.cgi?id=81573

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

DOM4 Spezifikationen NodeList als Array.prototype in dessen Prototyp Kette.

Einige mehr Hintergrund für diesen. [ArrayClass] ermöglicht uns Dinge wie document.querySelectorAll ('. Foo'). ForEach usw. Der Patch unter bugs.webkit.org hat ein Laufzeit-Flag, weil unklar ist, ob dies noch möglich ist.

Historisch diese Array-ähnliche Objekte nicht enthalten, diese Methoden aus dem Array-Prototyp, wie Array.prototype.forEach.call(nodeList, function() { ... }) zu codieren führt. Dies soll sich nun in DOM4 ändern.