0
Это addEventListener("click", forgotPassword)
не работает, когда // ADD PANEL TO BODY
событие вызывает. Пожалуйста, помогите исправить это.JavaScript Мышь Click 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', это не сработает. Вы можете отключить 'forget_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