как лучше - parent.childNodes или parent.children
Что лучше использовать:
var childs = parent.childNodes; for (var i = 0, len = childs.length; i < len; i += 1) { if (childs[i].nodeType === 1) { console.log(childs[i]); } } или var childs = parent.children; for (var i = 0, len = childs.length; i < len; i += 1) { console.log(childs[i]); } первое по стандарту, но длинное; второе нестандартное, но вроде как работает везде и без лишних условий |
Если текстовые ноды не нужны то children
http://learn.javascript.ru/traversing-dom |
vadim5june,
но и первый и второй вариант не отобразит лишнего! |
обход children быстрее childNodes в 1.5-3 раза не в ие 6-7
в ие6 в 24 в ие7 в 124 (Николас Закас) |
благодарю
|
В чем разница между этими свойствами? Оба стандартные?
|
megaupload,
в 6-ом "носороге" сказано что children нестандартный, хотя реализован везде (15.3.2) |
Подскажите есть ли какой-нибудь более изящный способ вытащить два элемента из node-листа по классу и создать из них свойство объекта:
// ищет два элемент по их классу. Из значений этих элементов создается свойство объекта: var childs = xxx.children, obj = {}, i, len, elem1, elem2; for (i = 0, len = childs; i < len; i += 1) { if (childs[i].className === "class1") { elem1 = childs[i].innerHTML; } if (childs[i].className === "class2") { elem2 = childs[i].innerHTML; } } obj[elem1] = elem2; не нравится запись, а исправить не знаю как( |
Обьясните тогда почему он работает быстрее? За счет чего?
|
var childs = xxx.children, obj = {}, i, len, elem1, elem2; if (elem1 = xxx.querySelector('.class1')) elem1 = elem1.innerHTML; if (elem2 = xxx.querySelector('.class2')) elem2 = elem2.innerHTML; } obj[elem1] = elem2; Только будет искать классы среди всех подомков, не только детей. |
Цитата:
danik.js, спасибо |
dmitry111, код можно огранизовать ввиде цикла, если элементов больше двух.
|
danik.js,
или использовать elem.querySelectorAll(selector); Цикл слишком затратен! |
Часовой пояс GMT +3, время: 02:59. |