使用 JavaScript 按类隐藏所有元素
Hide all elements by Class using JavaScript
按类隐藏所有元素:
- 使用
getElementsByClassName
方法获取 HTML 元素的集合。 - 使用循环遍历集合
for...of
。 - 将每个元素的
style.display
属性设置为none
。
以下是本文示例的 HTML。
索引.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <div class="box">Box 1</div> <div class="box">Box 2</div> <div class="box">Box 3</div> <button id="btn">Click me</button> <script src="index.js"></script> </body> </html>
这是相关的 JavaScript 代码。
索引.js
const btn = document.getElementById('btn'); btn.addEventListener('click', () => { const boxes = document.getElementsByClassName('box'); for (const box of boxes) { // 👇️ Remove element from DOM box.style.display = 'none'; // 👇️ hide element (still takes up space on page) // box.style.visibility = 'hidden'; } });
我们使用
document.getElementsByClassName()
方法获取HTMLCollection
具有特定类的元素。
我们使用
for…of
循环遍历集合,在每次迭代中,我们将元素的
显示属性设置
none
为隐藏它。
请注意,该getElementsByClassName
方法返回一个 HTML 集合而不是数组。如果要将集合转换为数组,请将其传递给
Array.from
方法。
索引.js
const btn = document.getElementById('btn'); btn.addEventListener('click', () => { // 👇️ Use Array.from to convert to array const boxes = Array.from(document.getElementsByClassName('box')); boxes.forEach(box => { // 👇️ Remove element from DOM box.style.display = 'none'; // 👇️ hide element (still takes up space on page) // box.style.visibility = 'hidden'; }); });
将 转换HTMLCollection
为数组后,我们就可以在 JavaScript 中使用任何支持数组的方法,例如Array.forEach
.
要隐藏每个元素,我们将其display
属性设置为none
,但是您可能需要
根据您的用例使用可见性属性。
当元素的
display
属性设置为 时none
,该元素将从 DOM 中移除并且对布局没有影响。文档呈现为好像该元素不存在一样。另一方面,当元素的visibility
属性设置为 时hidden
,它仍会占用页面空间,但该元素是不可见的(未绘制)。它仍然会像往常一样影响您页面上的布局。
下面是一个使用该visibility
属性按类隐藏所有元素的示例。
索引.js
const btn = document.getElementById('btn'); btn.addEventListener('click', () => { const boxes = Array.from(document.getElementsByClassName('box')); boxes.forEach(box => { // 👇️ hide element (still takes up space on page) box.style.visibility = 'hidden'; }); });
如果单击该按钮,您会看到这些div
元素消失了,但它们仍会占用页面空间。
visibility
这就是设置tohidden
和display
to
之间的区别none
。
如果您希望避免移动页面上的内容(这可能会让用户感到困惑),这可能是您的首选解决方案。