Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не видит элемент (https://javascript.ru/forum/events/74946-ne-vidit-ehlement.html)

lkombatl 19.08.2018 16:31

Не видит элемент
 
Здравствуйте.
Пытаюсь написать юзерскрипт для одной браузерки.
Когда в консоли прописываю получить элемент по классу мне возвращает undefined, но если я чрез просмотр кода элемента найду его в коде страницы в ручную и пропишу ту же самую команду то элемент находится без проблем.
В чём может быть загвоздка? В каком направлении хотя бы гуглить?

Aetae 19.08.2018 16:38

Всё просто: элемент появляется на странице уже после того как отработал скрипт.

Простой вариант - подождать появления:
function main(element){
  //код скрипта делающий что-то с элементом
}

(function wait(){
  var element = document.querySelector('#id');
  if(element) //если элемент найден
    return main(element); //вызываем функцию main

  setTimeout(wait, 100); //иначе ждём ещё 100ms  
}());


Сложный - вмешаться в работу функции приводящей к появлению этого элемента.

Rise 19.08.2018 16:39

Как у вас получается в коде страницы скрипт выполнять?

lkombatl 19.08.2018 16:52

Aetae
Не думаю что из-за этого.

Элемент уже появился и я в консоли прописал вручную после появления элемента но он не видит. Но когда я нажал ПКМ и просмотр кода элемента и сам так сказать вручную до нужного элемента дошёл он стал видеть.

Rise
Я не в коде скрипт выполнял, я в коде нужный элемент в ручную находил. Немного косноязычно выразился.

lkombatl 19.08.2018 16:59

Вот примерно так


Rise 19.08.2018 17:00

А как вы его получаете по классу, просто я не знаю поисковых методов которые бы возвращали undefined, обычно null или пустая коллекция?

Alexandroppolus 19.08.2018 17:02

Цитата:

Сообщение от lkombatl
получить элемент по классу

селектор правильный ты сотворил, чтоб элемент промыслить?

----
элемент точно не в ифрейме?

Alexandroppolus 19.08.2018 17:05

Цитата:

Сообщение от lkombatl
document.getElementsByClassName(...)[16]

может, таких меньше 17, вот и undefined

Rise 19.08.2018 17:13

Цитата:

Сообщение от Alexandroppolus
элемент точно не в ифрейме?

Так и есть, выбрал элемент в инспекторе и сменился контекст в консоли.

lkombatl 19.08.2018 17:16

Alexandroppolus
В 1 картинке до просмотра кода в ручную и после.
и после просмотри находит таки 17 элемент хотя ни каких действия на экране я не совершал.
До просмотра кода даже 0 элемент не находит.

элемент точно не в ифрейме?
Сейчас проверил, да в iframe.
Что такое не знаю, но сейчас буду гуглить, может в нём дело.


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