当前位置:首页 > JavaScript

js实现简单的搜索框

2026-01-31 05:48:53JavaScript

实现搜索框的基本结构

HTML部分需要创建一个输入框和一个按钮,用于用户输入搜索关键词并触发搜索功能。

<input type="text" id="searchInput" placeholder="输入搜索关键词">
<button id="searchButton">搜索</button>
<div id="searchResults"></div>

添加事件监听器

为按钮添加点击事件监听器,当用户点击按钮时获取输入框的值并执行搜索操作。

document.getElementById('searchButton').addEventListener('click', function() {
    const searchTerm = document.getElementById('searchInput').value;
    if (searchTerm.trim() !== '') {
        performSearch(searchTerm);
    }
});

实现搜索功能

编写performSearch函数,模拟搜索过程或调用实际API。这里以模拟本地数据搜索为例。

function performSearch(searchTerm) {
    const mockData = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
    const results = mockData.filter(item => 
        item.toLowerCase().includes(searchTerm.toLowerCase())
    );
    displayResults(results);
}

显示搜索结果

将搜索结果渲染到页面上,可以通过动态创建HTML元素来实现。

function displayResults(results) {
    const resultsContainer = document.getElementById('searchResults');
    resultsContainer.innerHTML = '';

    if (results.length === 0) {
        resultsContainer.innerHTML = '<p>未找到匹配结果</p>';
        return;
    }

    const ul = document.createElement('ul');
    results.forEach(item => {
        const li = document.createElement('li');
        li.textContent = item;
        ul.appendChild(li);
    });
    resultsContainer.appendChild(ul);
}

添加键盘事件支持

为提升用户体验,可以监听输入框的键盘事件,当用户按下Enter键时触发搜索。

document.getElementById('searchInput').addEventListener('keyup', function(event) {
    if (event.key === 'Enter') {
        const searchTerm = document.getElementById('searchInput').value;
        if (searchTerm.trim() !== '') {
            performSearch(searchTerm);
        }
    }
});

完整代码示例

将上述代码整合到一个完整的HTML文件中,可以直接运行测试。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简单搜索框</title>
</head>
<body>
    <input type="text" id="searchInput" placeholder="输入搜索关键词">
    <button id="searchButton">搜索</button>
    <div id="searchResults"></div>

    <script>
        document.getElementById('searchButton').addEventListener('click', function() {
            const searchTerm = document.getElementById('searchInput').value;
            if (searchTerm.trim() !== '') {
                performSearch(searchTerm);
            }
        });

        document.getElementById('searchInput').addEventListener('keyup', function(event) {
            if (event.key === 'Enter') {
                const searchTerm = document.getElementById('searchInput').value;
                if (searchTerm.trim() !== '') {
                    performSearch(searchTerm);
                }
            }
        });

        function performSearch(searchTerm) {
            const mockData = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
            const results = mockData.filter(item => 
                item.toLowerCase().includes(searchTerm.toLowerCase())
            );
            displayResults(results);
        }

        function displayResults(results) {
            const resultsContainer = document.getElementById('searchResults');
            resultsContainer.innerHTML = '';

            if (results.length === 0) {
                resultsContainer.innerHTML = '<p>未找到匹配结果</p>';
                return;
            }

            const ul = document.createElement('ul');
            results.forEach(item => {
                const li = document.createElement('li');
                li.textContent = item;
                ul.appendChild(li);
            });
            resultsContainer.appendChild(ul);
        }
    </script>
</body>
</html>

扩展功能建议

  • 添加防抖功能,避免频繁触发搜索请求
  • 实现异步搜索,调用真实API获取数据
  • 增加搜索历史记录功能
  • 添加搜索建议或自动完成功能
  • 优化UI样式,提升用户体验

js实现简单的搜索框

标签: 简单js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…