Почему 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 не находит элемент?
Доброго времени суток!
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.
Я поделился быстрым примером, используя 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 самого импута, так?
Источник