Вопрос

На этот вопрос уже есть ответ здесь:

Почему 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 = ... чтобы эта функция выполнялась только после анализа всего документа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top