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

实现搜索栏结果跳转至自定义URL的需求与代码咨询

解决搜索结果跳转至自定义URL的问题

核心思路是将国家名称与对应URL绑定为键值对,生成搜索结果时直接给<a>标签设置跳转链接。具体修改如下:

1. 重构数据结构

把纯国家名称数组改成包含name(国家名)和url(跳转地址)的对象数组,确保每个国家对应唯一自定义URL:

const countryData = [
  { name: 'Australia', url: '/travel/page001.html' },
  { name: 'Austria', url: '/travel/page002.html' },
  { name: 'Brazil', url: '/travel/page003.html' },
  { name: 'Canada', url: '/travel/page004.html' },
  { name: 'Denmark', url: '/travel/page005.html' },
  { name: 'Egypt', url: '/travel/page006.html' },
  { name: 'France', url: '/travel/page007.html' },
  { name: 'Germany', url: '/travel/page008.html' },
  { name: 'USA', url: '/travel/page009.html' },
  { name: 'Vietnam', url: '/travel/page010.html' }
];

2. 修改loadSearchData函数

遍历对象数组,创建<a>标签时同步设置href属性,实现点击跳转:

function loadSearchData() {
  const countryData = [
    { name: 'Australia', url: '/travel/page001.html' },
    { name: 'Austria', url: '/travel/page002.html' },
    { name: 'Brazil', url: '/travel/page003.html' },
    { name: 'Canada', url: '/travel/page004.html' },
    { name: 'Denmark', url: '/travel/page005.html' },
    { name: 'Egypt', url: '/travel/page006.html' },
    { name: 'France', url: '/travel/page007.html' },
    { name: 'Germany', url: '/travel/page008.html' },
    { name: 'USA', url: '/travel/page009.html' },
    { name: 'Vietnam', url: '/travel/page010.html' }
  ];

  const list = document.getElementById('list');
  
  countryData.forEach((item) => {
    const a = document.createElement("a");
    a.innerText = item.name;
    a.href = item.url; // 绑定跳转URL
    a.classList.add("listItem");
    // 可选:添加target="_blank"让链接在新窗口打开
    // a.target = "_blank";
    list.appendChild(a);
  })
}

3. 保留原有搜索逻辑

原search函数无需改动,它基于元素文本内容匹配,与URL无关,可正常工作:

function search() {
  let listContainer = document.getElementById('list');
  let listItems = document.getElementsByClassName('listItem');
  let input = document.getElementById('searchbar').value
  input = input.toLowerCase();
  let noResults = true;
  
  for (i = 0; i < listItems.length; i++) {
    if (!listItems[i].innerHTML.toLowerCase().includes(input) || input === "") {
      listItems[i].style.display = "none";
      continue;
    } else {
      listItems[i].style.display = "flex";
      noResults = false;
    }

    listContainer.style.display = noResults ? "none" : "block";
  }
}

完整HTML代码

HTML部分保持原样即可:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Searchbar</title>
  <!-- link rel="stylesheet" href="styles.css" -->
</head>

<body onload="loadSearchData()">
  <div class="container">
    <h2>Search Parts</h2>
    <input id="searchbar" autocomplete="off" onkeyup="search()" type="text" name="search" placeholder="What are you looking for?">
    <div id="list"></div>
  </div>
  <script src="script.js"></script>
</body>

修改后,搜索结果的每个国家名称都会成为可点击链接,点击后跳转到对应自定义URL,原有搜索功能完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:37:04