Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не могу добраться до HTMLCollection (https://javascript.ru/forum/events/85077-ne-mogu-dobratsya-do-htmlcollection.html)

ureech 29.03.2023 18:35

Не могу добраться до HTMLCollection
 
Привет.

d.forEach(function (ul, k) {      
            console.log(ul.children)      
    });


В браузере в консоле

HTMLCollection { 0: li.disabled, 1: li.is_set_access.disabled.hide, length: 2 }
HTMLCollection { 0: li.disabled, 1: li.disabled, 2: li.disabled, 3: li.disabled, length: 4 }
....


Если открыть

HTMLCollection { 0: li.disabled, 1: li.is_set_access.disabled.hide
, length: 2 }
​
0: <li class="disabled" bind-id="174" data-name="Меню" data-widget-id="3" data-bp_id="181">​
1: <li class="is_set_access disabled hide" bind-id="182" data-name="HTML блок" data-widget-id="14" data-bp_id="189">
​
length: 2
​
<prototype>: HTMLCollectionPrototype { item: item(), namedItem: namedItem(), length: Getter, … }


Мне нужно получать атрибуты li. Никак не могу.

рони 29.03.2023 18:51

ureech,
что мешает сделать цикл по ul.children?

рони 29.03.2023 18:58

ureech,
<!DOCTYPE HTML>
<html>

<head>
    <title>Untitled</title>
</head>

<body>
    <ul>
        <li class="disabled" bind-id="174" data-name="Меню" data-widget-id="3" data-bp_id="181"></li>​
        <li class="is_set_access disabled hide" bind-id="182" data-name="HTML блок" data-widget-id="14" data-bp_id="189"></li>
    </ul>
    <script>
        document.querySelectorAll('ul').forEach(function(ul, k) {
            for (let li of ul.children) console.log(li.dataset.name);
        });
    </script>
</body>

</html>

ureech 29.03.2023 19:13

Да делал. И цикл и перецикл. И пытался Array.from() применить. Нихрена(.
У меня нет html. Он есть, но очень глубокое вложенность. И вот я добрался до сюда через 4 цикла.

ureech 29.03.2023 19:31

Вот у меня предыдущий цикл. d
Array(7) [ ul#pos-pos_92.position.ui-sortable, ul#pos-pos_90.position.ui-sortable, ul#pos-pos_91.position.ui-sortable, ul#pos-pos_96.position.ui-sortable, ul#pos-pos_95.position.ui-sortable, ul#pos-pos_93.position.ui-sortable, ul#pos-pos_94.position.ui-sortable
 ]
​
0: <ul id="pos-pos_92" class="position ui-sortable" rel="pos_92">​
1: <ul id="pos-pos_90" class="position ui-sortable" rel="pos_90">​
2: <ul id="pos-pos_91" class="position ui-sortable" rel="pos_91">​
3: <ul id="pos-pos_96" class="position ui-sortable" rel="pos_96">​
4: <ul id="pos-pos_95" class="position ui-sortable" rel="pos_95">​
5: <ul id="pos-pos_93" class="position ui-sortable" rel="pos_93">​
6: <ul id="pos-pos_94" class="position ui-sortable" rel="pos_94">
​
length: 7

Там уже в ul.children эта коллекция.

ureech 29.03.2023 19:32

И никак не добраться, то ошибка, undefined, то пустой массив

ureech 29.03.2023 19:49

Если так, как вы написали, то у меня
var ul = document.querySelectorAll('ul');
     ul.forEach(function (a, k) {
        if($(a).attr('rel')){
          //  for(let li of a.children){
                console.log(a.children);
           // }
        }
     });


HTMLCollection { length: 0 }
​
0: <li class="disabled" bind-id="174" data-name="Меню" data-widget-id="3" data-bp_id="181">​
1: <li class="is_set_access disabled hide" bind-id="182" data-name="HTML блок" data-widget-id="14" data-bp_id="189">
​
length: 2
​
<prototype>: HTMLCollectionPrototype { item: item(), namedItem: namedItem(), length: Getter, … }
custom.js:30:25
HTMLCollection { length: 0 }
custom.js:30:25
HTMLCollection { length: 0 }
...

ureech 29.03.2023 19:50

И при переборе уже ничего...

ureech 29.03.2023 19:54

На ум пришло следующее. Скорее всего этот DOM формирует тоже js и мой код существует до "его" кода. Попробую в эту сторону покапать.


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