为什么refButton
在以下JavaScript代码中获得null
?
<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>
答案 0 :(得分:59)
在您调用函数时,页面的其余部分未呈现,因此该元素不存在。尝试在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>
答案 1 :(得分:10)
您需要将JavaScript 放在正文标记的末尾。
找不到它,因为它还不在DOM中!
您也可以将它包装在onload事件处理程序中,如下所示:
window.onload = function() {
var refButton = document.getElementById( 'btnButton' );
refButton.onclick = function() {
alert( 'I am clicked!' );
}
}
答案 2 :(得分:3)
因为当脚本执行时,浏览器还没有解析<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>
请注意,您也可以使用addEventListener
而不是window.onload = ...
来使该功能仅在解析完整个文档后执行。