Обновлено: одна из причин, по которой вы можете получить 0
для второй строки и 1
для первой строки: вы распечатываете filterRowElement.length
, и это правда в то время , это было 0
. Когда ваш цикл событий закончен, ваша структура (React, Angular, et c) обновила страницу (либо после ваших действий, либо до ваших действий в следующем цикле событий). Теперь console.log
распечатывает всю структуру, и, когда вы смотрите на нее в отладчике, теперь она равна 1
.
. Чтобы решить эту проблему, я должен был сделать что-то подобное раньше:
setTimeout(() => {
doSomething();
}, 0);
Итак, теперь вы ждете следующего цикла событий, чтобы ваша страница была "построена" или "обновлена".
Если это страница c, я смог получить 1
для обоих случаев и получить к нему доступ:
Вы имеете в виду, что
console.log(filterRowElement);
дал вам объект с length
, равным 1
, а затем
console.log(filterRowElement.length);
дал вам 0
?
Следующие работы:
arr = document.getElementsByClassName("foo-bar");
console.log(arr);
console.log(arr.length);
arr[0].innerHTML = "hello world";
arr[0].style.background = "orange";
arr[0].style.display = "inline-block";
arr[0].style.padding = "1.2em";
arr[0].style.borderRadius = "6px";
<div class="foo-bar"></div>
getElementsByClassName
вживую ... ваша страница тем временем меняется? Попробуйте document.querySelectorAll(".foo-bar")
вместо:
arr = document.querySelectorAll(".foo-bar");
console.log(arr);
console.log(arr.length);
arr[0].innerHTML = "hello world";
arr[0].style.background = "orange";
arr[0].style.display = "inline-block";
arr[0].style.padding = "1.2em";
arr[0].style.borderRadius = "6px";
<div class="foo-bar"></div>