JavaScript getElementByID() не работает [дубликат]
-
11-09-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
Почему refButton
получать null
в следующем коде JavaScript?
<html>
<head>
<title></title>
<script type="text/javascript">
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('I am clicked!');
};
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Решение
В тот момент, когда вы вызываете свою функцию, остальная часть страницы не отображается, и поэтому элемент в этот момент не существует.Попробуйте вызвать вашу функцию window.onload
может быть.Что-то вроде этого:
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function(){
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('I am clicked!');
}
};
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Другие советы
Вам нужно поставить JavaScript в конце тега body.
Он не находит его, потому что его еще нет в DOM!
Вы также можете обернуть его в обработчик событий загрузки следующим образом:
window.onload = function() {
var refButton = document.getElementById( 'btnButton' );
refButton.onclick = function() {
alert( 'I am clicked!' );
}
}
Поскольку при выполнении сценария браузер еще не проанализировал <body>
, поэтому он не знает, что существует элемент с указанным идентификатором.
Вместо этого попробуйте это:
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = (function () {
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('Dhoor shala!');
};
});
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Обратите внимание, что вы также можете использовать addEventListener
вместо window.onload = ...
чтобы эта функция выполнялась только после анализа всего документа.