You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在清空搜索输入框时隐藏搜索结果?仅使用JavaScript

解决方案:清空搜索输入框时清除搜索结果

我明白你的困扰——之前的代码在输入框清空时没法隐藏所有列表项,这是因为当query为空字符串时,el.innerText.indexOf('')会对所有元素返回0(空字符串在任何文本里都能匹配到),所以所有<li>都会被设置为display: block,这显然不是你想要的效果。

下面是纯JavaScript的修复方案,只需要修改你的myFunction函数即可:

function myFunction() { 
  var query = document.querySelector('#myInput').value.trim(); // 去除首尾空格,避免空输入带空格的误判
  var elements = document.querySelectorAll('li'); 

  // 当输入框为空时,直接隐藏所有列表项
  if (!query) {
    for (var i = 0; i < elements.length; i ++) { 
      elements[i].style.display = 'none'; 
    }
    return; // 结束函数,无需执行后续筛选逻辑
  }

  // 输入框有内容时,执行筛选逻辑
  for (var i = 0; i < elements.length; i ++) { 
    var el = elements[i]; 
    // 转小写实现不区分大小写的搜索,不需要的话可以去掉.toLowerCase()
    if (el.innerText.toLowerCase().indexOf(query.toLowerCase()) !== -1) {
      el.style.display = 'block'; 
    } else {
      el.style.display = 'none'; 
    }
  } 
}

关键修改点说明:

  • query.trim():处理输入框只有空格的情况,避免误判为有效搜索内容
  • 空值判断逻辑:输入框为空时直接批量隐藏所有列表项,快速终止函数流程
  • 不区分大小写优化:让搜索更人性化,用户无需严格匹配大小写

现在测试一下:清空输入框时所有列表项会自动隐藏;输入内容时,正常显示匹配的项,完美解决你的问题!

内容的提问来源于stack exchange,提问作者Michelle Do

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:09:44