我试图制作一个按钮,单击时在控制台上打印字符串“Button clicked”,但我不断收到错误
Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') at course.js:70。
这是 HTML 按钮的代码:
<button id="go-button">Go</button>
<br>
Click that button
Run Code Online (Sandbox Code Playgroud)
这是它的 Javascript:
function buttonClicked(){
console.log("Button clicked");
}
var btn = document.getElementById("go-button");
btn.addEventListener("click", buttonClicked, true);
Run Code Online (Sandbox Code Playgroud)
我正在学习 2017 年的视频课程,并复制了讲师编写的确切代码,但他的运行按预期进行。我认为这可能是一种过时的方法,导致了问题,但后来查了一下,大约三个网站显示了类似的例子。老实说,我很困惑。
您的代码似乎在 DOM 加载到浏览器之前就已执行。
把它放在下面window.onload。这样它就能够找到go-button并添加事件监听器。
function buttonClicked(){
console.log("Button clicked");
}
window.onload=function(){
var btn = document.getElementById("go-button");
btn.addEventListener("click", buttonClicked, true);
}
Run Code Online (Sandbox Code Playgroud)
参考:无法读取 null 的属性“addEventListener”
或者
将您的脚本导入放在 的HTML末尾body
<html>
<body>
.........
<script src="main.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
参考:上述问题的另一个答案