当前位置:首页 > 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文件中,可以直接运行测试。

js实现简单的搜索框

<!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实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

vue实现简单树

vue实现简单树

使用 Vue 实现简单树形结构 递归组件实现 递归组件是 Vue 实现树形结构的常见方式。通过组件调用自身实现无限层级嵌套。 <template> <ul> &l…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…