为了账号安全,请及时绑定邮箱和手机立即绑定

过滤 HTML 内容?

过滤 HTML 内容?

Cats萌萌 2023-09-25 16:21:00
我目前正在开发一个网页,我希望根据按钮按下情况来过滤图像。因此,如果我按“假期”,它应该只显示分配有 css 类“假期”的图像等。我已经尝试过以下两种方法,但没有让它们发挥作用。由于对 javascript 缺乏良好的理解,可能是我这边的一个错误。如何通过 W3Schools过滤 Div 元素从Stack Overflow 帖子的下拉菜单中进行过滤。* {    box-sizing: border-box;}.col-1 {    width: 8.33%;}.col-2 {    width: 16.66%;}.col-3 {    width: 25%;}.col-4 {    width: 33.33%;}.col-5 {    width: 41.66%;}.col-6 {    width: 50%;}.col-7 {    width: 58.33%;}.col-8 {    width: 66.66%;}.col-9 {    width: 75%;}.col-10 {    width: 83.33%;}.col-11 {    width: 91.66%;}.col-12 {    width: 100%;}[class*="col-"] {    float: left;    padding: 15px;    border: 1px solid red; /* Just for Display purposes */}.row::after {    content: "";    clear: both;    display: table;}.button-container {  text-align: center;}.flex-container {    display: flex;    flex-direction: row;    flex-wrap: wrap;    align-items: flex-start;}.flex-content {    width: 20%;    padding: 5px;}
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

给你一个解决方案


filterSelection("all")

function filterSelection(c) {

  var eles = document.getElementsByClassName("flex-content");

  

  for(var i=0; i < eles.length; i++) {

    if (c === "all" || eles[i].classList.contains(c)) {

      eles[i].classList.remove("displayNone");

    } else {

      eles[i].classList.add("displayNone");

    }

  }

}

* {

    box-sizing: border-box;

}


.col-1 {

    width: 8.33%;

}


.col-2 {

    width: 16.66%;

}


.col-3 {

    width: 25%;

}


.col-4 {

    width: 33.33%;

}


.col-5 {

    width: 41.66%;

}


.col-6 {

    width: 50%;

}


.col-7 {

    width: 58.33%;

}


.col-8 {

    width: 66.66%;

}


.col-9 {

    width: 75%;

}


.col-10 {

    width: 83.33%;

}


.col-11 {

    width: 91.66%;

}


.col-12 {

    width: 100%;

}


[class*="col-"] {

    float: left;

    padding: 15px;

    border: 1px solid red; /* Just for Display purposes */

}


.row::after {

    content: "";

    clear: both;

    display: table;

}


.button-container {

  text-align: center;

}


.flex-container {

    display: flex;

    flex-direction: row;

    flex-wrap: wrap;

    align-items: flex-start;

}


.flex-content {

    width: 20%;

    padding: 5px;

}


.displayNone {

  display: none;

}

<body>

  <div class="row">

    <div class="col-12">

      <h1 style="text-align: center;">Image List</h1>

      <div class="button-container">

        <button class="btn" onclick="filterSelection('all')" >All</button>

        <button class="btn" onclick="filterSelection('holiday')" >Holidays</button>

        <button class="btn" onclick="filterSelection('work')" >Work</button>

      </div>

    </div>

    </div>

      <div class="row">

        <div class="col-2"></div>

        <div class="col-8">

          <div class="flex-container">

            <div class="flex-content">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

            <div class="flex-content holiday">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

            <div class="flex-content work">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

            <div class="flex-content">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

            <div class="flex-content">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

            <div class="flex-content">

              <img src="https://via.placeholder.com/300" style="width: 100%;"/>

            </div>

          </div>

        </div>

      <div class="col-2"> 

    </div>

  </div>

</body>

向按钮添加 onClick 方法filterSelection并将值作为参数传递。

创建一个displayNone用于隐藏元素的类。

使用jsfiddle的解决方案


查看完整回答
反对 回复 2023-09-25
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信