Javascript 根据图像名称的搜索输入过滤数据
这是我的HTML代码Javascript 根据图像名称的搜索输入过滤数据,javascript,html,Javascript,Html,这是我的HTML代码 I am trying to filter out based on search by name but problem in code. 150卢比/- 相框 100卢比/- 礼品 100卢比/- 玩具和游戏 200卢比/- 这是我的Javascript代码片段,它有问题。 const search=document.getElementById(“过滤器产品”); 控制台日志(搜索); const productName=document.query
I am trying to filter out based on search by name but problem in code.
150卢比/-
相框
100卢比/-
礼品
100卢比/-
玩具和游戏
200卢比/-
这是我的Javascript代码片段,它有问题。
const search=document.getElementById(“过滤器产品”);
控制台日志(搜索);
const productName=document.querySelectorAll(“.card\u body.card title”);
search.addEventListener(“键控”,filterProducts);
函数过滤器产品(e)
{
const text=e.target.value.toLowerCase();
productName.forEach(功能(产品)
{
const item=product.firstChild.textContent;
if(item.toLowerCase().indexOf(text)!=-1)
{
product.parentElement.parentElement.style.display=“block”
}
其他的
{
product.parentElement.parentElement.style.display=“无”
}
});
}
问题是,当我试图搜索任何项目时,过滤器不起作用。它显示了未定义的错误。因此,问题一直存在,我尝试了各种方法,但仍然没有找到适合我的正确解决方案。所以,这就是整个问题。我正试图使我的搜索框,通过我的网站上的几个图像过滤。因此,如果我在搜索框中输入布景,它不会显示该项目。它对我有效
确保您的JS包含在html中,或者将其放在“脚本”标记之间,如下所示:
文件
150卢比/-
相框
100卢比/-
礼品
100卢比/-
玩具和游戏
200卢比/-
const search=document.getElementById(“过滤器产品”);
控制台日志(搜索);
const productName=document.querySelectorAll(“.card\u body.card title”);
search.addEventListener(“键控”,filterProducts);
函数过滤器产品(e)
{
const text=e.target.value.toLowerCase();
productName.forEach(功能(产品)
{
const item=product.firstChild.textContent;
if(item.toLowerCase().indexOf(text)!=-1)
{
product.parentElement.parentElement.style.display=“block”
}
其他的
{
product.parentElement.parentElement.style.display=“无”
}
});
}
请尝试下面的代码,您需要在parentElement
<input type="text" placeholder="Search Products" id="filter_products"/>
<!-- <ul id="users-list"></ul> -->
<div class="row" id="products">
<div class="col-lg-4 col-md-4 col-sm-12 col-10 d-block m-auto">
<div class="card">
<img src="../img/scenery.jpg" class="card-img img-fluid">
<div class="card_body">
<ul id="products-list"><h2 class="card-title" id="scenery">Scenery</h2></ul>
</div>
<div>
<ul><div class="price">Rs. 150/- </div></ul>
<!-- <a href="../html/register.html"><input type="submit" name="" value="Order Now"></a> -->
<a href="../html/register.html">
<button class="btn btn-outline-danger btn-md">Order Now</button>
</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-10 d-block m-auto">
<div class="card">
<img src="../img/photo_frame-1.jpg" class="card-img img-fluid">
<div class="card_body">
<ul id="products-list"><h2 class="card-title" id="photoframe">Photo Frames</h2></ul>
</div>
<div>
<ul>
<div class="price">Rs. 100/- </div>
</ul>
<a href="../html/register.html">
<button class="btn btn-outline-danger btn-md">Order Now</button>
</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-10 d-block m-auto">
<div class="card">
<img src="../img/gift-2.jpg" class="card-img img-fluid">
<div class="card_body">
<ul id="products-list"><h2 class="card-title" id="gift">Gifts</h2></ul>
</div>
<div>
<ul>
<div class="price">Rs. 100/- </div>
</ul>
<a href="../html/register.html">
<button class="btn btn-outline-danger btn-md">Order Now</button>
</a>
</div>
</div>
</div>
</div>
<div class="row" id="products">
<div class="col-lg-4 col-md-4 col-sm-12 col-10 d-block m-auto">
<div class="card">
<img src="../img/toys.jpg" class="card-img img-fluid">
<div class="card_body">
<ul id="products-list"><h2 class="card-title" id="toys">Toys & Games</h2></ul>
</div>
<div>
<ul>
<div class="price">Rs. 200/- </div>
</ul>
<a href="../html/register.html">
<button class="btn btn-outline-danger btn-md">Order Now</button>
</a>
</div>
</div>
</div>
Here is my Javascript code snippet which has problem.
const search = document.getElementById("filter_products");
console.log(search);
const productName = document.querySelectorAll(".card_body .card-title");
search.addEventListener("keyup", filterProducts);
function filterProducts(e)
{
const text = e.target.value.toLowerCase();
productName.forEach(function(product)
{
const item = product.firstChild.textContent;
if (item.toLowerCase().indexOf(text) != -1)
{
product.parentElement.parentElement.style.display = "block"
}
else
{
product.parentElement.parentElement.style.display = "none"
}
});
}
这对我有用。搜索特定项目时,其他项目不会隐藏。我希望只显示我搜索的产品项目。搜索特定项目时,其他项目不会隐藏。我希望只显示我搜索的产品项。
if (item.toLowerCase().indexOf(text) != -1)
{
product.parentElement.parentElement.parentElement.style.display = "block"
}
else
{
product.parentElement.parentElement.parentElement.style.display = "none"
}