Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обход всех Node документа (https://javascript.ru/forum/events/84406-obkhod-vsekh-node-dokumenta.html)

Andy_kun 31.08.2022 13:43

Обход всех Node документа
 
Подскажите пожалуйста, правильно ли я реализовал обход всех Node документа, ну кроме Node атрибутов:

function my_func(element_, return_NODE_callback_func)
{

    let element_childNodes = element_.childNodes;
    
    for(let i=0; i<element_childNodes.length; i++)
    {

         return_NODE_callback_func(element_childNodes[i]);
        
        if(element_childNodes[i].hasChildNodes() == true)   
        {
             //Значиту у данной ноды есть минимум одна дочерняя Нода, применим к ней ту же самую функцию обьхода:
             my_func(element_childNodes[i], return_NODE_callback_func);
        }
    }
        
}



function return_NODE_callback_func(return_NODE)
{
   console.log(return_NODE);     
}



//------------------------------------int main:---------------------------------

let element_find = document;       //Элемент у которого нужно обойти все Ноды.

my_func(element_find, return_NODE_callback_func);



Так что все вроде бы все правильно и работает, но на всякий случай хотел уточнить.

voraa 31.08.2022 14:17

Можно проще
function my_func(element, callback) {
    const iterator = document.createNodeIterator(element, NodeFilter.SHOW_ALL);
    let current;
    while (current = iterator.nextNode()) {
        callback (current);
    } 
}


https://developer.mozilla.org/en-US/...teNodeIterator

рони 31.08.2022 14:52

Andy_kun,
https://developer.mozilla.org/ru/doc...eateTreeWalker

Andy_kun 31.08.2022 15:36

Спасибо, не знал про такие функции.


Часовой пояс GMT +3, время: 02:03.