我在基本 JS 按钮中收到“未捕获的类型错误:无法读取 null 的属性(读取“addEventListener”)”错误

dev*_*oop 1 html javascript

我试图制作一个按钮,单击时在控制台上打印字符串“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 年的视频课程,并复制了讲师编写的确切代码,但他的运行按预期进行。我认为这可能是一种过时的方法,导致了问题,但后来查了一下,大约三个网站显示了类似的例子。老实说,我很困惑。

Par*_*osh 7

您的代码似乎在 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)

参考:上述问题的另一个答案