0
即// ADD PANEL TO BODY
事件正在调用addEventListener("click", forgotPassword)
不起作用。 请帮助解决这个问题。JavaScript鼠标单击addEventListener不工作
的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>
即使你把它放在'DOMContentLoaded'里面,它也不起作用。你可以控制'forgot_password_btn',你可以在那里得到它。似乎是一些其他问题。把它放在'onload'回调里面,但我正在寻找令人信服的理由。请参阅:https://jsfiddle.net/8hz1bpt4/3/ – Rayon
问题是“document.body.innerHTML + = theme_panel;”线。它与处理程序混淆。就像我说的那样,这不是插入HTML的好方法,并且可能会导致其他问题。 – NGPixel
可能是这样做的更好的方式,因为'document.body.innerHTML + = theme_panel; '会杀死事件监听器。 https://jsfiddle.net/8hz1bpt4/6/ – Rayon