javascript - JavaScript 事件监听器
问题描述
我正在尝试使用 JS 事件侦听器更改正文的背景颜色。单击按钮时没有错误代码并且颜色没有改变。
//Change body background-color
var buttonFour = document.querySelector("#button-four");
let colorOptions = ["brown", "blue", "orange", "green", "white"];
buttonFour.addEventListener("toggle", function() {
for(let i = 0; i < colorOptions.length; i++) {
document.body.style.background = colorOptions[i];
}
})
解决方案
您可能想听的是“点击”事件。<detail>
当标签的状态发生变化时,“toggle”会被特别触发。https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement/toggle_event
buttonFour.addEventListener("click", function() {
for(let i = 0; i < colorOptions.length; i++) {
document.body.style.background = colorOptions[i];
}
})
编辑:刚刚意识到,您的处理程序也存在问题 - 每次调用上述处理程序时,背景都会立即循环所有颜色 - 总是以白色结尾。您需要跟踪当前显示的颜色,并在每次单击时转到下一个颜色:
function colorChanger() {
let currentColor = 0;
return function handler() {
currentColor = (currentColor + 1) % colorOptions.length
document.body.style.background = colorOptions[currentColor];
}
}
buttonFour.addEventListener("click", colorChanger())
推荐阅读
- python - 如何在blender python中操作对象中随机选择的顶点?
- python - 使用 Pandas 展平数据
- react-native - 我可以在 React-Native 中创建带有播放/暂停按钮的自定义通知吗?
- c - 关于变量不是通过 %p 打印的指针
- reactjs - Where am i going wrong with using typescript and redux to retrieve the stores data?
- excel - 如何在excel中堆叠或转换数据
- regex - 如何将文件名的一部分移动到不同的位置
- tableau-api - 我们如何在 Tableau 中添加 Alter 会话查询以提高性能
- r - Knit 无法安装软件包
- java - 客户端发送的 HTTP 状态 400 请求在语法上不正确 Spring mvc 项目