
本文详细介绍了如何使用javascript、html和css实现一个动态搜索功能。通过监听搜索框输入事件,实时过滤html列表(`
在现代Web应用中,为用户提供高效的数据检索和展示功能至关重要。本文将指导您如何创建一个交互式搜索框,该搜索框能够实时过滤HTML列表中的内容,并高亮显示所有匹配的关键词,从而显著提升用户体验。
首先,我们需要构建页面的基本HTML结构,包括一个搜索输入框和用于展示列表项的无序列表。
<main>
<input
type="search"
name="search_box"
id="search-box"
class="search_box"
placeholder="搜索大学..."
/>
<h1 class="title">全球顶尖大学列表</h1>
<ul class="world-universities_list" id="world-universities_list">
<li class="university">Massachusetts Institute of Technology (MIT)</li>
<li class="university">Stanford University</li>
<li class="university">Harvard University</li>
<li class="university">California Institute of Technology (Caltech)</li>
<li class="university">University of Oxford</li>
<li class="university">University of Cambridge</li>
<li class="university">University of Chicago</li>
<li class="university">ETH Zurich - Swiss Federal Institute of Technology</li>
<li class="university">University of California, Berkeley (UCB)</li>
<li class="university">Aalborg University (Denmark)</li>
<li class="university">Aalto University (Finland)</li>
<li class="university">Aarhus University (Denmark)</li>
<li class="university">Abdullah Gül University (Turkey)</li>
<li class="university">Abertay University (United Kingdom)</li>
<li class="university">Aberystwyth University (United Kingdom)</li>
<li class="university">Abia State University (Nigeria)</li>
<li class="university">Abilene Christian University (United States)</li>
<li class="university">Adam Mickiewicz University (Poland)</li>
<li class="university">Addis Ababa University (Ethiopia)</li>
<li class="university">Adelphi University (United States)</li>
<li class="university last-u">Princeton University</li>
</ul>
</main>为了使界面更具吸引力,并定义高亮显示的效果,我们需要添加一些CSS样式。其中,.highlight 类是实现高亮的关键。
body {
margin: 0;
padding: 0;
font-family: 'Poppins', sans-serif;
}
*, *::before, ::after {
padding: 0;
margin: 0;
box-sizing: border-box;
}
ul {
list-style-type: none;
padding: 0;
margin: 0;
}
main {
background-color: rgb(255, 255, 255);
margin: 1.5rem;
display: flex;
flex-direction: column;
}
.title {
text-align: center;
color: rgb(221, 4, 58);
font-weight: 600;
font-family: 'Poppins', sans-serif;
font-size: 2rem;
margin-top: 2rem;
}
.search_box {
display: block;
width: 100%;
height: 2rem;
border-radius: 0.5rem;
border: 1.5px solid #0000002c;
margin-top: 2rem;
outline: none;
padding: 2px;
}
.world-universities_list {
background-color: rgb(104, 7, 39);
color: white;
padding: 1.5rem;
border-radius: 1rem;
margin-top: 3rem;
}
.university:not(.last-u) {
margin-bottom: 2rem;
}
/* 高亮样式 */
.highlight {
background-color: aqua; /* 高亮背景色 */
font-weight: bold; /* 高亮字体加粗 */
color: black; /* 确保高亮文字清晰可见 */
padding: 2px 0; /* 适当内边距 */
border-radius: 3px; /* 轻微圆角 */
}JavaScript代码负责监听用户的输入,并根据输入内容实时更新列表的显示和高亮。
立即学习“Java免费学习笔记(深入)”;
// 获取DOM元素
const searchBox = document.getElementById("search-box");
const universities = document.querySelectorAll(".university"); // 获取所有大学列表项
// 定义搜索功能函数
const searchUniversity = () => {
// 监听搜索框的键盘抬起事件
searchBox.addEventListener("keyup", () => {
// 获取搜索框当前值,转换为小写并去除所有空格
const searchBoxInput = searchBox.value.toLowerCase();
const noWhiteSpaceInput = searchBoxInput.replace(/\s/g, ""); // 移除所有空格
// 遍历所有大学列表项
universities.forEach((university) => {
// 获取列表项的原始文本内容,转换为小写并去除所有空格
const universityName = university.textContent.toLowerCase().replace(/\s/g, "");
// 存储原始文本内容,用于后续高亮操作
const originalText = university.textContent;
// 1. 过滤逻辑:根据搜索框输入显示或隐藏列表项
if (universityName.includes(noWhiteSpaceInput)) {
university.style.display = "block"; // 匹配则显示
} else {
university.style.display = "none"; // 不匹配则隐藏
}
// 2. 高亮逻辑:如果搜索框有输入,则高亮匹配部分
if (noWhiteSpaceInput.length > 0) {
// 创建正则表达式,'gi' 表示全局匹配和不区分大小写
const regex = new RegExp(`(${noWhiteSpaceInput})`, "gi");
// 使用replace方法,将匹配到的内容用<span>标签包裹,并应用highlight样式
// $1 代表正则表达式中第一个捕获组(即括号内的内容)
const highlightedText = originalText.replace(regex, "<span class='highlight'>$1</span>");
university.innerHTML = highlightedText; // 更新列表项的HTML内容
} else {
// 如果搜索框为空,则恢复列表项的原始文本,移除所有高亮
university.innerHTML = originalText;
}
});
});
};
// 调用搜索功能函数,启动监听
searchUniversity();代码详解:
通过上述步骤,您已经成功实现了一个功能完善且用户友好的实时搜索和高亮显示功能。这个模式在许多Web应用中都非常常见,掌握它将对您的前端开发技能大有裨益。
以上就是JavaScript实现搜索框实时过滤与高亮显示列表项的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号