Логин:

Пароль:

Форумы
Общие вопросы
Document Object Model
Обсуждаем конференцию
Web Usability (test)

Web Usability (test)

Void

Кроссбраузерная выборка всех элементов и рекурсия

Столкнулся с такой проблемой:

Мне необходимо было взять ВСЕ дивы в документе и производить кое какие действия с их стилями.
Также необходимо было чтобы это работало во всех браузерах.

Поскольку Mozilla не имеет коллекции ВСЕХ элементов, мне пришлось использовать DOM-массив childNodes и рекурсивно перебрать все элементы:

function trackNodes_Mozilla (node,myI) {

}

function trackNodes_Mozilla_Rec(node,myI) {
for( myI=0 ; myI<node.childNodes.length ; myI++) {
// функция обработки элемента
trackNode (node.childNodes[myI]);
// Рекурсия
trackNodes_Mozilla_Rec (node.childNodes[myI],myI);
countElements++;
}
}

аналогичная функция для MSIE И NN Выглядела проще:

function trackNodes_MSIE_NN (node,myI) {
if (document.all)
allLayers = document.all;
if (document.layers)
allLayers = document.layers;
if (document.layers)
for ( i=0 ; i<allLayers.length ; i++) {
// функция обработки элемента
trackNode (allLayers[i]);
}
}

Обратите внимание на переменную myI в функции для Mozilla - если не передавать её таким образом, рекурсия будет зацикливаться на первом элементе, так как в цикле for она будет переопределять значение из предыдущего шага рекурсии.
СообщениеАвторДата
Alexey Pechenkin17.09.2003 18:34
Сергей Кириенко05.01.2004 12:39