javascript - 搜索后如何重新排列过滤的卡片?

标签 javascript twitter-bootstrap

搜索“卡二”后,我希望结果重新对齐以从结果部分的开头显示。

此外,我找不到任何有关如何对卡片进行分页的文档...我只是想澄清一下对卡片进行分页。我可以找到有关如何对表格进行分页的文档。卡片上的卡片未使用卡片类别。

我尝试使用卡片组类而不是卡片 block 类。这是代码笔:https://codepen.io/dnorton94/pen/NWKGagz

<!-- search bar -->
<div class="container">
  <div class="row">
    <div class="col-sm-12 mb-3">
      <input type="text" id="myFilter" class="form-control" onkeyup="myFunction()" placeholder="Search by MBTI personality type..">
    </div>
  </div>
<!-- results -->
<div class="container">
  <div class="row" id="myItems">
    <!-- card one -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card one</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card two -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card two</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card three -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card three</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card four -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card four</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div> 
    var input, filter, cards, cardContainer, h5, title, i;
    input = document.getElementById("myFilter");
    filter = input.value.toUpperCase();
    cardContainer = document.getElementById("myItems");
    cards = cardContainer.getElementsByClassName("card");
    for (i = 0; i < cards.length; i++) {
        title = cards[i].querySelector(".card-block h5.card-title");
        if (title.innerText.toUpperCase().indexOf(filter) > -1) {
            cards[i].style.display = "";
        } else {
            cards[i].style.display = "none";
        }
    }
}
.row {
   display: flex;
   flex-wrap: wrap;
}

我希望在输入“卡二”后,结果会重新格式化,并且卡二会取代卡二的初始位置。

分页...我想在一页上显示 12 张卡片,然后在下一页上显示 12 张卡片,依此类推

最佳答案

您必须选择父元素,如下所示

if (title.innerText.toUpperCase().indexOf(filter) > -1) {
    cards[i].parentElement.style.display = "flex"
} else {
    cards[i].parentElement.style.display = "none"
}

关于javascript - 搜索后如何重新排列过滤的卡片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473081/

相关文章:

javascript - Safari 上 Node 实例上的 TypeError : Can only call Node. addEventListener

javascript - Bootstrap 响应式 CSS 导航栏不工作

javascript - 如何在 Bootstrap 模式中将背景图像动态绑定(bind)到 div 时设置加载 gif

css - 为什么@media 查询不更改特定屏幕尺寸的元素?

jquery - Bootstrap 4 输入组附加不起作用

javascript - Django Vue.js - 渲染多选下拉列表

javascript - 为什么 jQuery.fler 插件不使用 Ajax/PHP 删除图像?

Javascript - 从数组中选择选择器中的值

javascript - 在第一次和第二次点击+链接延迟时为动画创建不同的延迟

twitter-bootstrap - 为什么 Bootstrap 导航栏没有设置 'active' 类?