【发布时间】:2022-02-12 23:09:49
【问题描述】:
我在容器 div 中有四个子 div,每个子 div 里面都有一个按钮、图像和文本。默认情况下,图片必须为blurry,文本必须为hidden。
当用户点击按钮时,按钮应该是hidden,图片和文字应该是clear和visible。
我正在尝试使用 for 循环从元素中添加或删除 CSS 类,但这根本不起作用...
let btns = document.querySelectorAll(".btn");
let images = document.querySelectorAll(".img");
let imgTexts = document.querySelectorAll(".img-text");
images.forEach((el) => el.classList.add("blur"));
imgTexts.forEach((el) => el.classList.add("hidden"));
for (let i = 0; i < btns; i++) {
btns[i].addEventListener("click", function () {
btns[i].classList.add("hidden");
});
}
.blur {
filter: blur(8px);
-webkit-filter: blur(8px);
}
.hidden {
display: none;
}
<div class="container">
<div class="card">
<button class="btn">Open the Gift</button>
<img
src=""
alt="#" class="img">
<p class="img-text">CONGRATULATIONS????</p>
</div>
<div class="card">
<button class="btn">Open the Gift</button>
<img
src=""
alt="#" class="img">
<p class="img-text">CONGRATULATIONS????</p>
</div>
<div class="card">
<button class="btn">Open the Gift</button>
<img
src=""
alt="#" class="img">
<p class="img-text">CONGRATULATIONS????</p>
</div>
<div class="card">
<button class="btn">Open the Gift</button>
<img
src=""
alt="#" class="img">
<p class="img-text">CONGRATULATIONS????</p>
</div>
</div>
【问题讨论】:
-
i < btns-btns是 DOM 节点的集合... ->i < btns.length -
为什么要使用
for循环?为什么不只是另一个.forEach()? -
当您清除了内容的公共容器后,您可能会利用Descendant combinators 和/或Child combinator 的优势,这将使代码更加简单。
标签: javascript html css dom