【问题标题】:How to search a json file from a search bar in html?如何从 html 的搜索栏中搜索 json 文件?
【发布时间】:2021-12-23 06:42:41
【问题描述】:

我正在做一个项目,该项目需要在网站上使用搜索栏来搜索(希望是)JSON 文件。它不一定是 json,但它需要能够存储有关对象的其他信息。这就是我现在拥有的,

function search_animal() {
    let input = document.getElementById('searchbar').value
    input=input.toLowerCase();
    let x = document.getElementsByClassName('room');
    
  //input = the input in the search bar
  //x = the list of elements
  
    for (i = 0; i < x.length; i++) {
        if (!x[i].innerHTML.toLowerCase().includes(input)) {
            x[i].style.display="none";
      
        }
    
        else {
            x[i].style.display="list-item";             
        }
    }
}
<input id="searchbar" onkeyup="search_animal()" type="text"
        name="search">

我不知道如何在键入时弹出结果,以及如何显示除名称之外具有其他特征的对象

【问题讨论】:

    标签: javascript html json search


    【解决方案1】:

    假设你有一个真实的 JSON(字符串化),这个 json 数组的每个对象代表一种动物。

    首先,我们将 JSON 解析为带有 JSON.parse() 的 javascript 对象数组

    现在,您的搜索功能对于您的用例来说几乎是完美的,但由于您的示例没有显示 .room 是什么,我只是创建了一个 HTML &lt;ul&gt; 来保存动态创建的列表项。

    for 中,获取每个对象并验证名称是否包含正在搜索的内容。如果是,请创建一个 &lt;li&gt; 并向其中添加任何内容/HTML,然后将此新列表项附加到您的 &lt;ul&gt;

    看看下面的代码是否和你需要的相似

    let jsonData = `[
      {"Name": "Lion", "Color": "Yellow"},
      {"Name": "Monkey", "Color": "Orange"},
      {"Name": "Fish", "Color": "Blue"},
      {"Name": "Cat", "Color": "Black"}
    ]`
    
    let data = JSON.parse(jsonData)
    
    function search_animal() {
      let input = document.getElementById('searchbar').value
      input = input.toLowerCase();
      let x = document.querySelector('#list-holder');
      x.innerHTML = ""
    
      for (i = 0; i < data.length; i++) {
        let obj = data[i];
    
        if (obj.Name.toLowerCase().includes(input)) {
          const elem = document.createElement("li")
          elem.innerHTML = `${obj.Name} - ${obj.Color}`
          x.appendChild(elem)
        }
      }
    }
    <input id="searchbar" onkeyup="search_animal()" type="text" name="search">
    
    <ul id="list-holder">
    
    </ul>

    【讨论】:

    • 太好了!如果搜索名称以外的标签,是否有任何方法可以显示结果,例如,如果我搜索“橙色”,Monkey 会出现吗?
    • 只是改进搜索逻辑...在if 语句中,使用OR (||) 运算符添加更多检查。如果我的回答有帮助并解决了问题,请将其标记为已接受
    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多