当前位置:首页 > JavaScript

js实现全局搜索

2026-02-03 00:57:19JavaScript

实现全局搜索的基本思路

全局搜索功能通常涉及遍历页面内容或数据集,匹配用户输入的关键词并高亮显示结果。以下是基于JavaScript的实现方法。

监听搜索输入事件

通过事件监听获取用户输入的搜索词,触发搜索逻辑。使用input事件实现实时搜索。

const searchInput = document.getElementById('search-input');
searchInput.addEventListener('input', (e) => {
  const searchTerm = e.target.value.trim();
  performSearch(searchTerm);
});

遍历并匹配内容

遍历目标DOM元素或数据集合,检查是否包含搜索词。使用正则表达式实现不区分大小写的匹配。

function performSearch(term) {
  const elements = document.querySelectorAll('.searchable');
  const regex = new RegExp(term, 'gi');

  elements.forEach(element => {
    const text = element.textContent;
    const hasMatch = regex.test(text);
    element.classList.toggle('highlight', hasMatch);
  });
}

高亮显示匹配结果

通过CSS类控制高亮样式,动态添加或移除类名。

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

处理动态加载内容

对于异步加载的内容,需在数据渲染后重新执行搜索逻辑。

function loadDynamicContent() {
  fetch('/api/data').then(res => res.json()).then(data => {
    renderContent(data);
    performSearch(lastSearchTerm); // 重新应用当前搜索词
  });
}

优化搜索性能

对于大型数据集,采用防抖技术减少频繁搜索带来的性能问题。

let debounceTimer;
searchInput.addEventListener('input', (e) => {
  clearTimeout(debounceTimer);
  debounceTimer = setTimeout(() => {
    performSearch(e.target.value.trim());
  }, 300);
});

跨页面全局搜索实现

若需实现跨页面搜索,需结合本地存储或服务端保存搜索状态。

js实现全局搜索

// 保存搜索状态
function setSearchState(term) {
  localStorage.setItem('globalSearchTerm', term);
}

// 页面加载时恢复搜索
window.addEventListener('load', () => {
  const savedTerm = localStorage.getItem('globalSearchTerm');
  if (savedTerm) {
    searchInput.value = savedTerm;
    performSearch(savedTerm);
  }
});

标签: 全局js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…