javascript - 事件监听器不工作但没有错误
问题描述
我有一个事件监听器正在监听表单的提交,该表单将被发送到 firebase auth。几个小时前,它工作正常。但突然间,它就停止了。没有错误什么都没有。没有事件监听器在工作。我重新启动了 vs code 和我的电脑。定义事件侦听器的位置 -
import { smoothScroll } from './animations.js';
import { signup, logout } from './auth.js';
smoothScroll();
// Elements
const signupForm = document.querySelector('#signup-form');
const logoutBtn = document.querySelector('#logout-btn');
console.log(signupForm);
signupForm.addEventListener('submit', signup);
logoutBtn.addEventListener('click', logout);
实际功能 -
export function signup(e) {
e.preventDefault();
console.log('Sugb');
// User info
const email = signupForm['email'].value;
const password = signupForm['password'].value;
// Sign up
auth
.createUserWithEmailAndPassword(email, password)
.then((cred) => {
document.querySelector('.alert').classList.add('alert--show');
document.querySelector('.alert').textContent = 'User signed up';
loginState = true;
signupForm.reset();
})
.catch((error) => {
document
.querySelector('.alert')
.classList.remove('alert-success')
.add('alert-danger')
.add('alert--show');
document.querySelector('.alert').textContent = error.message;
});
}
export function logout(e) {
console.log('Logout');
alert('Logout');
}
通过一些调试,我发现我的函数没有被调用。这是 github 存储库https://github.com/akashshyamdev/doubt1,以防您需要更多信息。提前致谢。
解决方案
由于存在注册表单,当您添加事件侦听器但未调用事件回调函数时,我假设您在添加事件侦听器后更改了表单。
为此,您必须将事件委托给始终存在的元素,通常是document
. 正如 MDN 文档所说的那样,它冒泡了submit_event,我们可以这样做
代替
signupForm.addEventListener('submit', signup);
做这个
document.addEventListener('submit', function(e) {
if (e.target.closest('#signup-form')) {
return signup(e);
}
return false;
});
推荐阅读
- node.js - 下一个函数在 express 和 typescript 中返回什么数据类型?
- php - 如何在我的 send_login.php 中解决此错误
- html - 输入元素显示在屏幕的整个宽度上
- javascript - 从 php 回显两个单独的 javascript getElementById
- mongoose - schema .pre('save') 不会触发
- excel - VBA - 复制过滤结果列并获取列长度
- python - 如何处理在 python xml.etree.ElementTree 中修改 XML 的隐式命名空间
- python - Django RegexValidator 在 Django Admin 中导致 AttributeError
- c# - 创建具有来自 Dockerfile 的 https 的 ASP.Net Docker 容器的正确方法?
- sql - 导入 Excel 时如何翻译 .csv 文件中的特殊字符?