将 onclick 事件附加到元素不起作用

And*_*son 5 javascript dom onclick

我刚刚开始学习Javascript,几乎什么都不懂。我正在尝试将 onclick 事件附加到 HTML 中的元素。

var joinList = function() {
    alert("This should display when clicked");
}
document.getElementById("header").onclick = joinList;
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的代码。当单击具有 header ID 的元素时,不会发生任何事情。我究竟做错了什么?

以下是我的 HTML 代码

<!DOCTYPE html>
<html>
    <head>
        <title>Testing Page</title>
        <script src="testing.js"></script>
    </head>

    <body>
        <h1 id="header">Andrew Dawson</h1>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

xha*_*lix 3

问题是,您尝试加载一个 html 元素,但在执行 javascript 函数时该元素并不“存在”,因为 dom 尚未完成加载。为了使您的代码正常工作,您可以尝试以下解决方案:

将您的脚本标记放在 HTML 中的下面:

<!DOCTYPE html>
<html>
    <head>
        <title>Testing Page</title>
    </head>

    <body>
        <h1 id="header">Andrew Dawson</h1>
        <script src="testing.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

添加一个事件处理程序来检查窗口元素是否准备好:

window.addEventListener("load", eventWindowLoaded, false);

function eventWindowLoaded(){

    var joinList = function() {
        alert("This should display when clicked");
    }
    document.getElementById("header").onclick = joinList;

}
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是使用 jquery 框架和相关的文档就绪函数 http://api.jquery.com/ready/