…">
当前位置:首页 > 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);
  }
});

实现搜索函数:

js实现简单的搜索框

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);
    }
  }
});

实现实时搜索

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

js实现简单的搜索框

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实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…