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 она будет переопределять значение из предыдущего шага рекурсии. |