javascript - 如何让多个元素与 JavaScript 一起使用?
问题描述
因此,当我单击复选框时,背景颜色会发生变化。我希望此功能适用于所有复选框,但目前仅适用于第一个复选框。
function obtained() {
var obt = document.getElementsByClassName("obtained")[0];
var col = document.getElementsByClassName("entry")[0];
if (obt.checked == true) {
col.style.backgroundColor = "#2ab320";
} else {
col.style.backgroundColor = "#d3d5db";
}
}
<div class="entry">
<img class="class-name" src="image1.png">
<b>title1</b><br>content1
<input
type="checkbox"
class="obtained"
onclick="obtained()"
name="obtained"
>
</div><hr>
<div class="entry">
<img class="class-name" src="image2.png">
<b>title2</b><br>content2
<input
type="checkbox"
class="obtained"
onclick="obtained()"
name="obtained"
/>
</div><hr>
<div class="entry">
<img class="class-name" src="image3.png">
<b>title3</b><br>content3
<input
type="checkbox"
class="obtained"
onclick="obtained()"
name="obtained"
/>
</div><hr>
解决方案
在这种情况下,您应该声明一个辅助函数:
function makeTogglable(element) {
const obt = element.querySelector(".obtained");
obt.addEventListener("click", () => {
if(obt.checked == true) {
element.style.backgroundColor = "#2ab320";
} else {
element.style.backgroundColor = "#d3d5db";
}
});
}
然后你可以将它应用到你的 HTML 元素中,例如:
document.querySelectorAll('.entry').forEach(e => makeTogglable(e));
编辑:忘记了听众
推荐阅读
- java - 为什么变量需要在finally块中是静态的
- maven - 是否可以使用静态网站制作 Maven 存储库?
- ios - 从主线程 iOS 上的子类创建自定义 UIView
- javascript - 内容可编辑的正则表达式空格不起作用
- c# - 如何从 azure 函数执行我的 docker 容器
- c - 使用字节数组我得到一个“从 char* 到字节的无效转换”
- java - 没有使用 JUnit @Rule 删除 TemporaryFolder
- html - 通过 CSS 替换图像
- jquery - 如何用 jquery html(String) 替换 .innerHTML(String)?
- jenkins - 在 GitHub 拉取请求页面上添加一个按钮以手动触发 Jenkins 作业