Почему js не видит элемент

Почему JS не находит элемент?

Доброго времени суток!

Uncaught TypeError: Cannot set property ‘innerHTML’ of null
at HTMLInputElement.

Не могу понять почему JS не находит элемент label.

перегуглил даже англоязычные версии, но и там не нашёл для себя ответа.

Задача выводить название загружаемого файла вместо текущей записи в теге label.

  • Вопрос задан более двух лет назад
  • 787 просмотров

Я конечно понимаю, что Вам хотелось бы видеть вопросы от Илона Маска, но к сожалению я один из тех кто учится )

Не уж то так опять всё просто?
Поменять местами инпут и лейбл?

Ради этого сейчас комп включу ))

Поменять местами инпут и лейбл?

PressOff, label может быть связан с input двумя способами:
1. через атрибут for, содержащий id нужного input
2. через вложенность (input вложен в label)

Если у инпута нет id, то первый случай не имеет смысла, но если он есть, то можно попробовать найти label с помощью селектора по атрибуту. Если нашли — задача решена, поэтому return.
В цикле мы проходимся вверх по DOM дереву от нашего инпута, если среди родителей есть label — его и вернем, но если дошли до корня DOM дерева (из выражения parent.parentElement вернется null, который приводится к false), то логично предположить, что связанного label с нашим input просто нет.

Дмитрий Беляев, всё же Вас побеспокою:)

сделал инпут вложенным в лейбл, но название не подставляется.

вообще не изменился:
но после Вашего сообщения понял, что надо в значении функции поставить id самого импута, так?

Источник

Почему JS не находит элемент?

Доброго времени суток!

Читайте также:  Почему pdf печатает не на всю страницу

Uncaught TypeError: Cannot set property ‘innerHTML’ of null
at HTMLInputElement.

Не могу понять почему JS не находит элемент label.

перегуглил даже англоязычные версии, но и там не нашёл для себя ответа.

Задача выводить название загружаемого файла вместо текущей записи в теге label.

  • Вопрос задан более двух лет назад
  • 787 просмотров

Я конечно понимаю, что Вам хотелось бы видеть вопросы от Илона Маска, но к сожалению я один из тех кто учится )

Не уж то так опять всё просто?
Поменять местами инпут и лейбл?

Ради этого сейчас комп включу ))

Поменять местами инпут и лейбл?

PressOff, label может быть связан с input двумя способами:
1. через атрибут for, содержащий id нужного input
2. через вложенность (input вложен в label)

Если у инпута нет id, то первый случай не имеет смысла, но если он есть, то можно попробовать найти label с помощью селектора по атрибуту. Если нашли — задача решена, поэтому return.
В цикле мы проходимся вверх по DOM дереву от нашего инпута, если среди родителей есть label — его и вернем, но если дошли до корня DOM дерева (из выражения parent.parentElement вернется null, который приводится к false), то логично предположить, что связанного label с нашим input просто нет.

Дмитрий Беляев, всё же Вас побеспокою:)

сделал инпут вложенным в лейбл, но название не подставляется.

вообще не изменился:
но после Вашего сообщения понял, что надо в значении функции поставить id самого импута, так?

Источник

Почему JS не находит элемент по ID?

Добрый день, коллеги! Столкнулся с проблемой на ровном месте, не могу понять, в чем суть. С помощью JS получаю див по его ID, далее, пытаюсь найти в этом диве вложенный элемент с другим ID, на что получаю ошибку. Подскажите, где я ошибся? Буду очень благодарен.

Читайте также:  Почему дочка не похожа на меня

Ошибка: Uncaught TypeError: document.getElementById(. ).getElementById is not a function at :1:47

  • Вопрос задан более трёх лет назад
  • 1325 просмотров

у элемента нет метода getElementById() – только у document. См. методы Element.

id должен быть уникален в рамках всего документа, поэтому сразу вызывайте document.getElementById(‘irc_cc’)

Дмитрий Носиков, В том то и суть что вы когда пишете :

Первый раз запрашиваете у объекта document метод .getElementById

А вот когда составляете цепочку типа :
getElementById(‘Rd1Chf’).getElementById(‘irc_cc’)

Источник

Javascript не может видеть динамически сгенерированные элементы?

Я не знаю, почему вновь созданные элементы не могут быть видны следующей вызываемой функцией? Спасибо за помощь!! Решение: Добавьте async: false, чтобы отключить асинхронную функцию, чтобы убедиться, что test-output-2 и test-output-3 выполняются после процесса рождения. По умолчанию ajax использует async: true, что похоже на многопоточность.

3 ответа

Попытка найти элемент в DOM до того, как он будет загружен, не будет работать (скрипт запускается, как только он обнаружен. Если это значение выше HTML в файле, элемент еще не существует и, следовательно, не будет найден)

Точно так же запуск запроса AJAX и последующее действие, как если бы это была синхронная операция (ожидание завершения операции перед выполнением большего количества кода), не будет работать.

В первом случае код встречается до того, как браузер успел проанализировать HTML, поэтому элемент не существует в DOM, когда вы пытаетесь получить ссылку на него — это можно исправить, подождав, пока документ сигнал о том, что загрузка завершена.

Вторая проблема заключается в том, что сразу после запуска функции birth запускается функция whereIsTheChildren . К сожалению, запрос ajax все еще находится на рассмотрении, и поэтому мы еще не получили от него результаты, которые нам нужно использовать. Это исправлено путем помещения вызова whereIsTheChildren внутри успешного обратного вызова для запроса ajax.

Читайте также:  Minecraft почему не растет трава

Я поделился быстрым примером, используя vanilla JS и PHP — просто замените запрос в php-файл запросом для CGI.

Источник

Почему JS не находит элемент?

Доброго времени суток!

Uncaught TypeError: Cannot set property ‘innerHTML’ of null
at HTMLInputElement.

Не могу понять почему JS не находит элемент label.

перегуглил даже англоязычные версии, но и там не нашёл для себя ответа.

Задача выводить название загружаемого файла вместо текущей записи в теге label.

  • Вопрос задан более двух лет назад
  • 787 просмотров

Я конечно понимаю, что Вам хотелось бы видеть вопросы от Илона Маска, но к сожалению я один из тех кто учится )

Не уж то так опять всё просто?
Поменять местами инпут и лейбл?

Ради этого сейчас комп включу ))

Поменять местами инпут и лейбл?

PressOff, label может быть связан с input двумя способами:
1. через атрибут for, содержащий id нужного input
2. через вложенность (input вложен в label)

Если у инпута нет id, то первый случай не имеет смысла, но если он есть, то можно попробовать найти label с помощью селектора по атрибуту. Если нашли — задача решена, поэтому return.
В цикле мы проходимся вверх по DOM дереву от нашего инпута, если среди родителей есть label — его и вернем, но если дошли до корня DOM дерева (из выражения parent.parentElement вернется null, который приводится к false), то логично предположить, что связанного label с нашим input просто нет.

Дмитрий Беляев, всё же Вас побеспокою:)

сделал инпут вложенным в лейбл, но название не подставляется.

вообще не изменился:
но после Вашего сообщения понял, что надо в значении функции поставить id самого импута, так?

Источник

Поделиться с друзьями
Ответ и точка