Javascript не может найти элемент по id? [дубликат]
этот вопрос уже есть ответ здесь:
<html>
<head>
<title>Test javascript</title>
<script type="text/javascript">
var e = document.getElementById("db_info");
e.innerHTML='Found you';
</script>
</head>
<body>
<div id="content">
<div id="tables">
</div>
<div id="db_info">
</div>
</div>
</body>
</html>
Если я использую alert(e);
он появляется null
.... и очевидно, я не получаю никаких "нашел тебя" на экране. Что я делаю не так?
5 ответов
проблема в том, что вы пытаетесь получить доступ к элементу до его существования. Вам нужно дождаться полной загрузки страницы. Возможный подход-использовать onload
обработчик:
window.onload = function () {
var e = document.getElementById("db_info");
e.innerHTML='Found you';
};
большинство распространенных библиотек JavaScript предоставляют событие DOM-ready. Это лучше, так как window.onload
ждет всех изображений. В большинстве случаев вам это не нужно.
другой подход-разместить тег скрипта прямо перед закрытием </body>
- tag, так как все в передняя часть загружается в момент исполнения, затем.
запустите код либо в событии onload, либо непосредственно перед закрытием body
тег.
Вы пытаетесь найти элемент, которого нет в данный момент.
как браузер узнает, когда выполняется код внутри тега script? Итак, чтобы запустить код после полной загрузки окна,
window.onload = doStuff;
function doStuff() {
var e = document.getElementById("db_info");
e.innerHTML='Found you';
}
другой альтернативой является сохранение вашего <script...</script>
непосредственно перед закрытием </body>
тег.
скрипт вызывается до того, как элемент существует.
вы должны попробовать одно из следующих действий:
- оберните код в функцию и используйте событие body onload для его вызова.
- поставить скрипт в конце документа
- используйте атрибут defer в объявлении тега скрипта
скрипт выполняется перед построением DOM тела. Поместите все это в функцию и вызовите ее из onload
элемента тела.