javascript - 使用 queryselector (JS) 通过单击更改背景颜色
问题描述
我已经为这些按钮编写了这段代码,所以当我点击它们时,背景颜色会改变,但它不起作用。似乎是什么问题?
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="styles.css">
<title>JavaScript Background Color Switcher</title>
</head>
<body>
<div class="canvas">
<h1>Color Scheme Switcher</h1>
<span class="button" id="grey"></span>
<span class="button" id="white"></span>
<span class="button" id="blue"></span>
<span class="button" id="yellow"></span>
</div>
<script src="app.js"></script>
</body>
</html>
JS File:
document.querySelector('.button').addEventListener('click', function btn (id) {
document.body.style.background = id
})
解决方案
您必须使用在所有元素.querySelectorAll
上添加侦听器。.button
我还更正了您的语法addEventListener
let btns = document.querySelectorAll('.button')
btns.forEach(btn => {
btn.addEventListener('click', evt => {
document.body.style.background = evt.target.id
})
})
.button { cursor: pointer; }
<div class="canvas">
<h1>Color Scheme Switcher</h1>
<span class="button" id="grey">Grey</span>
<span class="button" id="white">White</span>
<span class="button" id="blue">Blue</span>
<span class="button" id="yellow">Yellow</span>
</div>
推荐阅读
- reactjs - 将参数传递给事件处理程序
- google-sheets - 如何编写允许单元格颜色根据范围内单元格的总和而改变的条件函数?
- php - Laravel 管理中间件不会重定向到仪表板
- react-native - Expo错误输出未显示目录或源
- php - 为什么网页中的 phpinfo() 显示版本 5.6,但命令行中的 php -v 显示 7.3?
- python - 如何在非索引列上找到多个熊猫数据框的交集
- c - C: printf 在 while 循环之前仍然没有刷新,即使格式字符串中有换行符
- c++ - 在 Visual C++ 2017 中:属性页中的哪个位置说明了哪些应用程序类型对应于项目?
- webpack - @font-face 不上传本地字体并且不显示错误(webpack)
- java - 每当我尝试获取表上的值并在`setString`上使用它时,我都会收到 indexOutOfBoundsException