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

如何修改JavaScript列表过滤逻辑 匹配任意关键词而非完整短语

解决方案

修改思路

  • 先将输入内容按空格分割为独立关键词,自动过滤空内容,避免连续空格生成无效关键词
  • 统一转为大写实现大小写不敏感匹配
  • 遍历列表项时判断是否存在至少一个关键词命中内容,满足条件则显示,否则隐藏
  • 额外兼容输入为空的场景,此时直接显示所有列表项,符合常规交互逻辑

修改后的完整JS代码

function myFunction() {
  var input, filterKeywords, ul, li, a, i, txtValue;
  input = document.getElementById("myInput");
  // 按任意数量空格分割输入,过滤空值后统一转大写
  filterKeywords = input.value
    .split(/\s+/)
    .filter(keyword => keyword.trim() !== '')
    .map(keyword => keyword.toUpperCase());
  ul = document.getElementById("myUL");
  li = ul.getElementsByTagName("li");
  
  for (i = 0; i < li.length; i++) {
    a = li[i].getElementsByTagName("a")[0];
    txtValue = (a.textContent || a.innerText).toUpperCase();
    // 无关键词时全部显示,有关键词时只要命中任意一个就显示
    const isMatch = filterKeywords.length === 0 || filterKeywords.some(keyword => txtValue.includes(keyword));
    li[i].style.display = isMatch ? "" : "none";
  }
}

效果验证

输入Primary home时,会被分割为PRIMARY、HOME两个关键词,只要列表项包含其中任意一个就会显示,你示例中的PRIMARY CARE HOME会正常命中,不会出现无结果的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:36:07