javascript - 添加多个事件监听器的更聪明的方法?
问题描述
为了开始使用我一直在学习的 javascript 技能,我创建了一个页面,您可以在其中单击 1-5 的数字,它们会慢慢消失。有没有更好的编码方法而不是在彼此之间列出事件侦听器?
const one = document.querySelector(".one");
const two = document.querySelector(".two");
const three = document.querySelector(".three");
const four = document.querySelector(".four");
const five = document.querySelector(".five");
one.addEventListener('click', e => {
one.remove();
two.addEventListener('click', e => {
two.remove();
three.addEventListener('click', e => {
three.remove();
four.addEventListener('click', e => {
four.remove();
five.addEventListener('click', e => {
five.remove();
});
});
});
});
});
解决方案
使侦听器对等并添加一些数据以保持下一个必须单击的状态...
let listenTo = 1
one.addEventListener('click', e => {
if (listenTo === 1) {
listenTo = 2
// fade away code
}
})
two.addEventListener ...
这些可以在一个循环中设置,也可以像这样......
// give the elements id="zero", etc in the markup
let ids = [ "zero", "one", "two" ... ]
let listenTo = "zero"
let listeners = ids.map((id, index) => {
let el = document.getElementById(id)
return el.addEventListener('click', e => {
if (listenTo === id) {
listenTo = index < ids.length-1 ? ids[index+1] : null
// fade away code
}
})
})
推荐阅读
- javascript - 尝试在 Alexa 中捕获贷款金额和利率并计算 EMI
- javascript - 将本地 CSV 文件映射到远程服务器并读取 CSV 中的最新数据以填充图表
- javascript - 如何告诉纯 JavaScript 不断检查变量?
- python - 错误:来自 csv 的 Python Whatsapp 消息。汽车
- python - turtle() 不旋转多个球加属性错误
- graphics - 金属底纹语言纹理不会清晰
- adsense-api - AdMob EARNINGS (USD) 价值不是真实价值
- javascript - 如何在中间而不是底部显示数据,而其中一个数据的值有很大差异。highcharts.js
- amazon-web-services - 如何将对现有 VPC 的引用传递给 cloudformation 模板?
- python - 安装 ipykernel 后 Jupyter Notebook 内核错误