当前位置:首页 > JavaScript

静态网页用js实现搜索功能

2026-04-04 12:32:25JavaScript

实现静态网页搜索功能的方法

静态网页可以通过JavaScript实现客户端搜索功能,无需后端支持。以下是几种常见实现方式:

基础文本搜索实现

创建搜索输入框和结果容器:

<input type="text" id="searchInput" placeholder="搜索...">
<div id="searchResults"></div>

添加JavaScript搜索逻辑:

const searchInput = document.getElementById('searchInput');
const searchResults = document.getElementById('searchResults');
const contentToSearch = document.querySelectorAll('.searchable-content');

searchInput.addEventListener('input', function() {
    const searchTerm = this.value.toLowerCase();
    searchResults.innerHTML = '';

    if (searchTerm.length < 2) return;

    contentToSearch.forEach(item => {
        const text = item.textContent.toLowerCase();
        if (text.includes(searchTerm)) {
            const resultItem = document.createElement('div');
            resultItem.innerHTML = item.innerHTML;
            searchResults.appendChild(resultItem);
        }
    });
});

使用Lunr.js实现高级搜索

安装Lunr.js:

<script src="https://unpkg.com/lunr/lunr.js"></script>

初始化搜索索引:

let idx = lunr(function() {
    this.ref('id');
    this.field('title');
    this.field('content');

    documents.forEach(doc => {
        this.add(doc);
    });
});

执行搜索:

function search() {
    const query = document.getElementById('searchInput').value;
    const results = idx.search(query);
    displayResults(results);
}

实现关键词高亮显示

在搜索结果中高亮匹配文本:

function highlightText(text, searchTerm) {
    const regex = new RegExp(`(${searchTerm})`, 'gi');
    return text.replace(regex, '<span class="highlight">$1</span>');
}

添加CSS样式:

.highlight {
    background-color: yellow;
    font-weight: bold;
}

优化搜索性能

对于大量内容,考虑以下优化:

  • 实现防抖机制减少频繁搜索

    let debounceTimer;
    searchInput.addEventListener('input', function() {
      clearTimeout(debounceTimer);
      debounceTimer = setTimeout(() => {
          performSearch(this.value);
      }, 300);
    });
  • 预加载搜索索引

  • 实现分页显示结果

完整示例代码

HTML结构:

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

JavaScript实现:

静态网页用js实现搜索功能

document.addEventListener('DOMContentLoaded', function() {
    const searchData = [
        {id: 1, title: "文章1", content: "这是第一篇文章的内容"},
        {id: 2, title: "文章2", content: "这是关于JavaScript的教程"}
    ];

    const idx = lunr(function() {
        this.ref('id');
        this.field('title');
        this.field('content');
        searchData.forEach(doc => this.add(doc));
    });

    document.getElementById('searchButton').addEventListener('click', function() {
        const query = document.getElementById('searchInput').value;
        const results = idx.search(query);

        let html = '';
        results.forEach(result => {
            const item = searchData.find(d => d.id == result.ref);
            html += `<div class="result-item">
                <h3>${item.title}</h3>
                <p>${item.content}</p>
            </div>`;
        });

        document.getElementById('searchResults').innerHTML = html || '无结果';
    });
});

这些方法可以根据具体需求进行组合和调整,适用于大多数静态网站的搜索功能实现。

分享给朋友:

相关文章

如何加载react静态页面

如何加载react静态页面

加载React静态页面的方法 使用React脚手架工具创建项目 通过Create React App(CRA)快速生成React项目结构,内置静态资源处理能力。执行以下命令初始化项目: npx…

react如何将页面静态化

react如何将页面静态化

React 页面静态化的方法 静态化(Static Site Generation, SSG)是将 React 应用预渲染为静态 HTML 文件的过程,提升加载速度和 SEO 友好性。以下是几种常见方…

react如何写多条件搜索功能

react如何写多条件搜索功能

实现多条件搜索功能 在React中实现多条件搜索功能,通常需要结合状态管理和筛选逻辑。以下是几种常见实现方式: 使用useState管理搜索条件 通过useState管理多个搜索条件,并在渲染时进行…

PHP 伪静态如何实现

PHP 伪静态如何实现

PHP 伪静态实现方法 伪静态通过URL重写技术,将动态URL转换为看似静态的URL形式,提升SEO友好性和用户体验。以下是常见实现方式: 使用Apache的mod_rewrite模块 确保Apac…

js如何实现伪静态

js如何实现伪静态

使用 URL 重写实现伪静态 在 JavaScript 中实现伪静态通常需要结合服务器端配置(如 Apache 或 Nginx)和前端路由库(如 Vue Router 或 React Router)。…

html css制作静态网页

html css制作静态网页

创建HTML文件结构 使用文本编辑器新建一个index.html文件,写入基础HTML5结构: <!DOCTYPE html> <html lang="zh-CN"> <…