JavaScript 鼠标点击 addEventListener 不工作

JavaScript Mouse Click addEventListener Not Working

addEventListener("click", forgotPassword) 在调用 // ADD PANEL TO BODY 事件时不起作用。 请帮忙解决这个问题。

Javascript:

var forgot_password_btn = document.querySelector("#forgot_password");
var theme_panel = "<div id=\"change-theme\"><a href=\"javascript:;\" class=\"dark\">DARK</a><a href=\"javascript:;\" class=\"light\">LIGHT</a></div>";

if (forgot_password_btn) {
    forgot_password_btn.addEventListener("click", forgotPassword);
}

function forgotPassword() {
    console.log("clicked");
}

// ADD PANEL TO BODY
window.onload = function () {
    document.body.innerHTML += theme_panel;
};

HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <a href="#" id="forgot_password">Forgot</a>
</body>
</html>

当您获取 forgot_password 元素时,DOM 尚未准备好。因此,不进行绑定。将逻辑放在 onload 事件中:

function forgotPassword() {
    console.log("clicked");
}

// ADD PANEL TO BODY
window.onload = function () {

    var forgot_password_btn = document.querySelector("#forgot_password");
    var theme_panel = "<div id=\"change-theme\"><a href=\"javascript:;\" class=\"dark\">DARK</a><a href=\"javascript:;\" class=\"light\">LIGHT</a></div>";

    if (forgot_password_btn) {
        forgot_password_btn.addEventListener("click", forgotPassword);
    }
};

此外,你应该避免像那样直接在JS中插入HTML内容。将其放入 HTML 或使用模板。