使用js写一个搜索时自动补全的工具
创建一个搜索自动补全工具通常涉及监听输入框事件,向服务器发送请求以获取匹配项,并更新UI以显示这些匹配项。以下是一个简单的示例,使用原生JavaScript来演示这个过程:
- HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search Autocomplete</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<input type="text" id="searchInput" placeholder="Search...">
<div id="autocompleteResults"></div>
<script src="script.js"></script>
</body>
</html>
- CSS (
styles.css
):
#autocompleteResults {
border: 1px solid #ccc;
max-height: 200px;
overflow-y: auto;
}
.resultItem {
padding: 5px;
cursor: pointer;
}
.resultItem:hover {
background-color: #f0f0f0;
}
- JavaScript (
script.js
):
document.addEventListener('DOMContentLoaded', function() {
const searchInput = document.getElementById('searchInput');
const autocompleteResults = document.getElementById('autocompleteResults');
const mockData = ['Apple', 'Banana', 'Cherry', 'Dragonfruit', 'Elderberry', 'Fig', 'Grape'];
searchInput.addEventListener('input', function(event) {
const query = event.target.value.toLowerCase();
const results = mockData.filter(item => item.toLowerCase().startsWith(query));
displayResults(results);
});
function displayResults(results) {
autocompleteResults.innerHTML = ''; // Clear previous results
if (results.length > 0) {
results.forEach(result => {
const resultItem = document.createElement('div');
resultItem.classList.add('resultItem');
resultItem.textContent = result;
resultItem.addEventListener('click', function() {
searchInput.value = result;
autocompleteResults.innerHTML = ''; // Clear results when an item is selected
});
autocompleteResults.appendChild(resultItem);
});
}
}
});
这个示例使用了一个简单的模拟数据集(mockData
)来演示自动补全功能。在实际应用中,您可能需要根据用户输入向服务器发送异步请求(例如,使用fetch
API)以获取匹配项。此外,您还可以根据需要调整样式和功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了