…">
当前位置:首页 > JavaScript

js实现搜索框

2026-03-16 04:13:04JavaScript

实现基础搜索框功能

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

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

添加JavaScript事件监听:

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

添加实时搜索功能

实现输入时实时触发搜索:

document.getElementById('searchInput').addEventListener('input', function(e) {
  const searchTerm = e.target.value;
  if (searchTerm.length > 2) {  // 避免太短时频繁搜索
    performSearch(searchTerm);
  }
});

搜索逻辑实现

基础搜索函数示例:

js实现搜索框

function performSearch(term) {
  // 模拟数据或API调用
  const mockData = ['apple', 'banana', 'cherry', 'date'];
  const results = mockData.filter(item => 
    item.toLowerCase().includes(term.toLowerCase())
  );

  displayResults(results);
}

结果显示处理

创建结果显示函数:

function displayResults(results) {
  const resultsContainer = document.getElementById('results');
  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);
}

添加搜索历史功能

实现搜索历史记录:

let searchHistory = [];

function addToHistory(term) {
  if (!searchHistory.includes(term)) {
    searchHistory.push(term);
    if (searchHistory.length > 5) {
      searchHistory.shift();
    }
    updateHistoryDisplay();
  }
}

function updateHistoryDisplay() {
  const historyElement = document.getElementById('history');
  if (historyElement) {
    historyElement.innerHTML = searchHistory.map(item => 
      `<span class="history-item">${item}</span>`
    ).join(' ');
  }
}

完善用户体验

添加键盘事件支持:

js实现搜索框

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

添加加载状态指示:

function setLoadingState(isLoading) {
  const button = document.getElementById('searchButton');
  button.disabled = isLoading;
  button.textContent = isLoading ? '搜索中...' : '搜索';
}

与后端API集成

实际项目中通常需要调用API:

async function performApiSearch(term) {
  try {
    setLoadingState(true);
    const response = await fetch(`/api/search?q=${encodeURIComponent(term)}`);
    const data = await response.json();
    displayResults(data.results);
    addToHistory(term);
  } catch (error) {
    console.error('搜索失败:', error);
    displayResults([]);
  } finally {
    setLoadingState(false);
  }
}

样式优化建议

添加基础CSS样式:

#searchInput {
  padding: 8px;
  width: 300px;
  margin-right: 10px;
}

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

#results {
  margin-top: 20px;
}

.history-item {
  cursor: pointer;
  color: blue;
  margin-right: 10px;
}

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js 实现按钮点击

js 实现按钮点击

实现按钮点击的 JavaScript 方法 HTML 按钮元素 在 HTML 中创建一个按钮,可以通过 <button> 或 <input> 标签实现: <button…

js实现vue模板

js实现vue模板

使用纯 JavaScript 实现 Vue 模板功能 要实现类似 Vue 的模板功能,可以通过以下步骤完成: 1. 数据绑定与响应式更新 通过 Object.defineProperty 或 Pr…

vue.js 实现grid

vue.js 实现grid

Vue.js 实现 Grid 布局 Vue.js 可以通过多种方式实现 Grid 布局,以下是几种常见的方法: 使用 CSS Grid 布局 CSS Grid 是一种强大的布局系统,可以直接在 Vu…