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

如何实现搜索栏仅检索关键词文本,排除HTML链接标签内容?

解决搜索栏误匹配HTML标签内容的问题

你的核心问题在于将完整HTML链接字符串直接存入数组,导致搜索时会匹配到标签里的href、fruits等无关内容。要实现仅匹配水果名称的需求,需重构数据结构,分离搜索目标与显示用链接。

步骤1:重构数据结构

把原有的HTML字符串数组改成包含水果名和对应链接的对象数组,让搜索逻辑可以单独针对水果名生效:

let availableKeywords = [
  { name: 'Apples', url: '/fruits/apples.html' },
  { name: 'Bananas', url: '/fruits/bananas.html' },
  { name: 'Oranges', url: '/fruits/oranges.html' },
  { name: 'Strawberries', url: '/fruits/strawberries.html' }
];

步骤2:修改搜索匹配逻辑

在filter阶段仅针对对象的name字段做匹配,彻底避开HTML标签内容:

const resultsBox = document.querySelector(".result-box");
const inputBox = document.getElementById("input-box");

inputBox.onkeyup = function(){
    let result = [];
    let input = inputBox.value.trim();
    if(input.length){
        result = availableKeywords.filter((item)=>{
            return item.name.toLowerCase().includes(input.toLowerCase());
        });
    }
    display(result);
}

步骤3:调整结果展示函数

根据对象中的name和url生成正确的HTML链接,保证显示效果与需求一致:

function display(result){
    if(!result.length){
        resultsBox.innerHTML = '';
        return;
    }
    const content = result.map((item)=>{
        return `<li><a href="${item.url}">${item.name}</a></li>`;
    });
    resultsBox.innerHTML = `<ul>${content.join('')}</ul>`;
}

改动说明

  • 数据结构分离后,搜索逻辑完全独立于HTML标签,输入f时不会匹配到fruits字段,自然无结果;输入e时会精准匹配包含e的Apples、Oranges、Strawberries。
  • 增加trim()处理输入,避免空格触发不必要的匹配。
  • 完善无结果时的清空逻辑,避免页面残留无效内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 22:04:50