javascript - 如何在 JavaScript 中应用多个 div 元素的过滤

标签 javascript html

我正在尝试学习 javascript 过滤。但是有一些从页面列表元素进行过滤的很好的示例,但是如何根据搜索输入过滤整个 div 呢?

到目前为止,我已经完成了这些,但我陷入困境,不知道如何进一步进行,我希望您能好心帮助我学习这个过程,提前致谢。

这是fiddle代码片段如下:

const searchBar = document.forms['search-books'].querySelector('input');
searchBar.addEventListener('keyup', function(e) {
    const term = e.target.value.toLocaleLowerCase();
    const books = list.getElementsByTagName('h5');
    Array.from(books).forEach(function(books) {
        const title = book.firstElementChild.textContent;
        if (title.toLowerCase().indexOf(term) != -1) {
            book.style.display = 'block';
        } else {
            book.style.display = 'none';
        }
    })
})
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<form id="search-books">
	<input type="text" placeholder="Search a book ... ">
</form>
<div class="container">
   <div class="row list-single">
      <div class="col-2"><img src="https://images.gr-assets.com/books/1447303603s/2767052.jpg"/></div>
      <div class="col-10">
         <h5>	The Hunger Games</h5>
         <a href="The-Hunger-Games.html">Learn</a> 
      </div>
   </div>
   <br>
   <div class="row list-single">
      <div class="col-2"><img src="https://images.gr-assets.com/books/1507396732s/2.jpg"/></div>
      <div class="col-10">
         <h5>Harry Potter</h5>
         <a href="Harry-Potter.html">Learn</a> 
      </div>
   </div>
</div>

最佳答案

您需要声明 list 元素或获取带有标签 h5 的所有元素。

由于您想要隐藏或显示该元素,因此您应该使用给定文本定位 div 的父级的父级。

const searchBar = document.forms['search-books'].querySelector('input');
searchBar.addEventListener('keyup', function(e) {
    const term = e.target.value.toLocaleLowerCase();
    const books = document.getElementsByTagName('h5');
    Array.from(books).forEach(function(book) {
        const title = book.textContent;
        if (title.toLowerCase().indexOf(term) != -1) {
            book.parentElement.parentElement.style.display = 'flex';
        } else {
            book.parentElement.parentElement.style.display = 'none';
        }
    })
})
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<form id="search-books">
	<input type="text" placeholder="Search a book ... ">
</form>
<div class="container">
   <div class="row list-single">
      <div class="col-2"><img src="https://images.gr-assets.com/books/1447303603s/2767052.jpg"/></div>
      <div class="col-10">
         <h5>	The Hunger Games</h5>
         <a href="The-Hunger-Games.html">Learn</a> 
      </div>
   </div>
   <br>
   <div class="row list-single">
      <div class="col-2"><img src="https://images.gr-assets.com/books/1507396732s/2.jpg"/></div>
      <div class="col-10">
         <h5>Harry Potter</h5>
         <a href="Harry-Potter.html">Learn</a> 
      </div>
   </div>
</div>

关于javascript - 如何在 JavaScript 中应用多个 div 元素的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568981/

相关文章:

javascript - 在两个 div 之间画一条线(多个连接)

javascript - Chart.js 如何在多个聊天中同步平移和缩放

JavaScript 原型(prototype)无法正常工作

Javascript 没有读取所有 var

javascript - 使用 Javascript 返回文件夹+文件

html - 我有一些 HTML 的工作方式似乎是不可能的。这怎么解释呢?

javascript ->> 运算符在 Javascript 中有什么作用?

javascript - 找不到 CSS 标签

java - 在 JSP 中使用 Ajax 响应

html - 如何从选取框中删除尾随空格?