当前位置:首页 > JavaScript

js实现简单的搜索框

2026-03-01 20:59:31JavaScript

实现基础搜索框功能

创建一个基础的HTML结构,包含输入框和搜索按钮:

<input type="text" id="searchInput" placeholder="输入搜索内容">
<button id="searchButton">搜索</button>
<div id="searchResults"></div>

添加基本CSS样式:

#searchInput {
  padding: 8px;
  width: 300px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

#searchButton {
  padding: 8px 16px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

实现搜索逻辑

监听按钮点击事件并处理搜索:

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

实现搜索函数:

function performSearch(term) {
  // 这里可以替换为实际的数据源或API调用
  const mockData = [
    { id: 1, title: 'JavaScript基础教程', content: '介绍JavaScript基本语法' },
    { id: 2, title: 'CSS高级技巧', content: '讲解CSS3高级特性' },
    { id: 3, title: 'HTML5新特性', content: '介绍HTML5新增元素和API' }
  ];

  const results = mockData.filter(item => 
    item.title.includes(term) || item.content.includes(term)
  );

  displayResults(results);
}

显示搜索结果

创建结果显示函数:

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

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

  const list = document.createElement('ul');
  results.forEach(item => {
    const li = document.createElement('li');
    li.innerHTML = `<h3>${item.title}</h3><p>${item.content}</p>`;
    list.appendChild(li);
  });

  resultsContainer.appendChild(list);
}

添加键盘支持

监听回车键触发搜索:

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

实现实时搜索

添加输入时的实时搜索功能:

let searchTimeout;
document.getElementById('searchInput').addEventListener('input', function() {
  clearTimeout(searchTimeout);
  const term = this.value.trim();

  searchTimeout = setTimeout(() => {
    if (term) {
      performSearch(term);
    } else {
      document.getElementById('searchResults').innerHTML = '';
    }
  }, 300);
});

优化搜索性能

对于大数据集使用更高效的搜索方法:

function performSearchOptimized(term) {
  // 构建搜索索引
  const searchIndex = mockData.map(item => ({
    id: item.id,
    text: `${item.title} ${item.content}`.toLowerCase()
  }));

  const termLower = term.toLowerCase();
  const results = searchIndex
    .filter(item => item.text.includes(termLower))
    .map(item => mockData.find(data => data.id === item.id));

  displayResults(results);
}

添加搜索高亮

在结果中高亮显示匹配文本:

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

// 在displayResults函数中使用:
li.innerHTML = `<h3>${highlightText(item.title, term)}</h3>
               <p>${highlightText(item.content, term)}</p>`;

添加高亮样式:

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

js实现简单的搜索框

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

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

vue简单实现

vue简单实现

Vue 简单实现步骤 安装 Vue.js 最新版本: npm install vue@latest 创建 Vue 实例: import { createApp } from 'vue' cons…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScri…