javascript - JavaScript,HTML 搜索引擎 - 如何获取元素的父级?
问题描述
我的问题是:
搜索脚本正在运行,但它只隐藏了代码中的 h3 元素。
<h3 class="post-subtitle" style="display: flex;">Protokoły tunelowania VPN</h3>
<h3 class="post-subtitle" style="display: flex;">Certyfikat cyfrowy</h3>
我需要代码来隐藏带有“post”ID的整个div,而不仅仅是h3元素。
我怎么做?
搜索栏的 HTML 代码:
<div id="kontener" class="container">
<div style="text-align:center" id="search-bar">
<input type="text" id="searchbar" onkeyup="searchBar()" class="shadow-lg">
</div>
</div>
网站上的 HTML 代码
<!-- First element -->
<div id="post">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="post-preview">
<a href="URL">
<h2 class="post-title"><i class="far fa-sticky-note fa-xs" aria-hidden="true"></i> ASO</h2>
<h3 class="post-subtitle" style="display: flex;">Protokoły tunelowania VPN</h3>
</a>
<p class="post-meta">11 Maj, 2021</p>
</div>
</div>
</div>
<hr>
</div>
<!-- End of First element -->
<!-- Second element -->
<div id="post">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="post-preview">
<a href="URL">
<h2 class="post-title"><i class="far fa-sticky-note fa-xs" aria-hidden="true"></i> ELSK</h2>
<h3 class="post-subtitle" style="display: flex;">Certyfikat cyfrowy</h3>
</a>
<p class="post-meta">26 Kwiecień, 2021</p>
</div>
</div>
</div>
<hr>
</div>
<!-- End of Second element -->
JavaScript 代码:
<script>
function searchBar() {
let input = document.getElementById('searchbar').value
input=input.toLowerCase();
let x = document.getElementsByClassName('post-subtitle');
for (i = 0; i < x.length; i++) {
if (!x[i].innerHTML.toLowerCase().includes(input)) {
x[i].style.display="none";
}
else {
x[i].style.display="flex";
}
}
}
</script>
解决方案
您只需要通过 .parentElement / .parentNode 或使用 .closest 函数来定位几个父节点。
例子:
<script>
function searchBar() {
let input = document.getElementById('searchbar').value
input=input.toLowerCase();
let x = document.getElementsByClassName('post-subtitle');
for (i = 0; i < x.length; i++) {
if (!x[i].innerHTML.toLowerCase().includes(input)) {
x[i].closest('#post').style.display="none";
// Or this below (note each parentElement targets parent tag)
// x[i].parentElement.parentElement.parentElement.parentElement.parentElement.style.display="none";
}
else {
x[i].closest('#post').style.display="flex";
}
}
}
</script>
推荐阅读
- c# - FluentMigrator - 将列添加到循环中的每个表
- excel - excel合并单元格复制粘贴问题
- pytorch - 给定组=1,大小为 [32, 3, 3, 3] 的权重,预期输入 [1, 1, 32, 340] 有 3 个通道,但有 1 个通道
- python - 将 SpaCy 输出添加到现有数据框时,列不对齐
- ios - 设备上的 UIImageView tintColor 错误
- azure-ad-b2c - Azure AD B2C 自助服务密码重置显示错误的标题
- infinispan - 如何使用自动 Compactor 在 Infinispan 持久性缓存中配置存储
- powershell - Powershell 中格式错误的 \p{X} 字符转义
- jasper-reports - Jasper 报告中的空白问题
- android - Firebase 要求初始化应用程序,即使它已经被初始化