метод forEach узла.childNodes?
после неправильный ответ о .item()
собственность Node.childNodes
для вопроса, я проверил __proto__
вернулся childNodes
of a form
элемент и нашел forEach
метод.
на forEach
метод Node.childNodes
не задокументировано в спецификации NodeList
, на Methods
в MDN или Интерфейс NodeList, и, по-видимому, не упоминается в повторите список узлов с помощью метода forEach или страницы, связанные с этим вопросом; хотя он появляется в Chromium 50.
доступен ли метод только в относительно последних версиях Chrome / Chromium? Если да, то задокументировано ли это?
есть ли какая-либо документация в отношении forEach()
метод 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@example.com">
<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>
2 ответов
DOM4 теперь определяет узла как повторяемое:
iterable<Node>;
По словам проект IDL, что означает
An интерфейс может быть объявлен типа Iterable С помощью iterable объявление (проверка
Iterable
) в теле интерфейса.iterable<value-type>; iterable<key-type, value-type>;
объекты, реализующие интерфейс, объявленный быть итерируемым поддержка повторяется для получения последовательности значений.
Примечание: в привязке языка ECMAScript интерфейс, который iterable будет иметь "записи", "forEach", "ключи", "значения" и @@iterator свойства объект-прототип интерфейса.
Если один параметр типа, то интерфейс имеет значение итератор и предоставляет значения указанного типа.
доступен ли метод только в относительно последних версиях Chrome / Chromium? Если да, то задокументировано ли это?
Да, это новое в DOM4, поэтому не широко доступно.
есть ли какая-либо документация, касающаяся метода forEach() узла.childNodes?
посмотреть добавить поддержку [ArrayClass] и использовать это в NodeList на трекере ошибок Chromium:
от https://bugs.webkit.org/show_bug.cgi?id=81573
http://dom.spec.whatwg.org/#interface-nodelist
DOM4 спецификации NodeList как имеющие массив.прототип в своей цепочке прототипов.
еще немного фона для этого. [ArrayClass] позволяет нам делать такие вещи, как document.querySelectorAll('.фу').по каждому элементу и т. д. Заплатка на bugs.webkit.org имеет флаг времени выполнения, потому что неясно, будет ли это все еще возможно достигать.
исторически эти такие объекты не включает эти методы из прототипа массива, что приводит к код типа Array.prototype.forEach.call(nodeList, function() { ... })
. Теперь это должно измениться в DOM4.