JavaScript getElementByID()不起作用

use*_*312 29 javascript getelementbyid

为什么refButtonnull使用以下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>
Run Code Online (Sandbox Code Playgroud)

jay*_*won 61

在您调用函数时,页面的其余部分未呈现,因此该元素不存在.尝试调用你的函数吧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>
Run Code Online (Sandbox Code Playgroud)

  • 我认为他不需要为DOM ready事件导入整个库.;) (4认同)
  • 或者考虑使用Prototype,JQuery或其他一些包来处理DOM ready事件. (3认同)

Jac*_*kin 11

您需要将JavaScript 放在body标记的末尾.

它没有找到它,因为它还没有在DOM中!

您也可以将它包装在onload事件处理程序中,如下所示:

window.onload = function() {
var refButton = document.getElementById( 'btnButton' );
refButton.onclick = function() {
   alert( 'I am clicked!' );
}
}
Run Code Online (Sandbox Code Playgroud)


Bru*_*eis 5

因为当脚本执行时浏览器还没有解析<body>,所以它不知道有指定 id 的元素。

试试这个:

<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>
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以使用addEventListener而不是window.onload = ...使该函数仅在解析整个文档后才执行。

  • 在解析整个文档并下载所有文件之前,window.onload 不会触发 (2认同)