文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript怎么实现智能搜索框

2024-04-02 19:55

关注

今天小编给大家分享一下JavaScript怎么实现智能搜索框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

 html部分

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>智能搜索框</title>

    <link rel="stylesheet" href="./search.css">

</head>

<body>

    <!-- 页面结构 -->

    <div class="search">

        <input class="search-input" type="text" autofocus="autofocus" placeholder="请输入关键字,用空格间隔关键字" value="">

        <button class="btn">搜索</button>

        <ul class="search-result"></ul>

    </div>

    <script src="./search.js"></script>

</body>

</html>

css部分

html,

body,

div {

    margin: 0;

    padding: 0;

}

ul,

li {

    list-style: none;

    margin: 0;

    padding: 0;

}

li {

    border: 1px solid #ccc;

    width: 500px;

    padding: 2px 1px;

    text-indent: 1rem;

}

li:hover{

    background-color: #efebeb;

}

li b{

    color: #f00;

}

.search {

    width: 600px;

    margin: 5% auto;

}

input {

    width: 500px;

    height: 30px;

    font-size: 1.1rem;

    text-indent: 1rem;

}

button {

    font-size: 1.1rem;

    margin-left: 10px;

    width: 60px;

    height: 35px;

}

JavaScript 部分

//1.2 分析数据结构

var arr=[

    "薇某某偷逃税被罚13.41亿",

    "延安新增确诊病例轨迹公布",

    "澳门回归22周年",

    "蕾神之锤vs宏慌之力,结局如何敬请期待",

    "我很怀疑是不是汪峰汪半壁又要开演唱会了",

    "起底吴某凡吴某凡吴某凡背后的疯狂饭圈",

    "环球时报评王某宏必须凉"

]

//2.0功能入口

var inputStr=document.querySelector(".search-input");

var strUl=document.querySelector(".search-result");

var btn=document.querySelector(".btn");

inputStr.oninput=function(){

    //2.0

    if(this.value.length==0){

        strUl.innerHTML="";

        return;

    }

    //2.1获取input框的值

    var keywords=this.value;

    //2.2消除两边空格

    keywords=keywords.trim();

    //2.3消除中间空格

    keywords=trimAll(keywords)

    // 2.4拆分关键字

    var keysArr = keywords.split(" ");

    // 2.5关键字去重

    keysArr=removeRepetition(keysArr);

    // 2.6从数据源匹配结果

    var resultsAll=matching(keysArr,arr);

    // 2.7渲染

    renders(resultsAll,strUl);

    for (let i = 0; i < resultsAll.length; i++) {

        let list=document.querySelectorAll(".search-result>li")

        list[i].addEventListener("click",function(){

        var URL="http://www.baidu.com/s?ie=UTF-8&wd=";

        if(list[i].innerHTML==""){

            window.location.href=URL;

        }else{  

          URL="http://www.baidu.com/s?ie=UTF-8&wd="+ list[i].innerHTML;

          console.log(list);

          window.location.href=URL;

        }

      });

    }

}

  //2.8点击搜索

  btn.addEventListener("click",skip);

// 工具函数

// 消除中间空格

function trimAll(_keywords){

    for(let i=0; _keywords.indexOf("  ")!=-1; i++){

        _keywords = _keywords.replace("  ", " ");

    }

return _keywords;   

}

// 消除关键字重复

function removeRepetition(_keysAll){

    var iteam=[];

    for (let i = 0; i < _keysAll.length; i++) {

      if(iteam.indexOf(_keysAll[i])==-1){

          iteam.push(_keysAll[i])

      }

    }

    return iteam;

}

//匹配结果

function matching(_keysAll,_arr){

    var iteam=[];

    for (let i = 0; i< arr.length; i++) {

        var flag=true;

        for (let j = 0; j < _keysAll.length; j++) {

         if(!_arr[i].includes(_keysAll[j])){

            flag=false;

            break;

         }

     } 

     if(flag){

         iteam.push(_arr[i]);

     }

   }

   return iteam

}

//渲染

function renders(_resultsAll,_strUL) {

    _strUL.innerHTML="";    

    for (let i = 0; i < _resultsAll.length; i++) {

       var iteamLi=document.createElement("li");

       iteamLi.innerHTML=_resultsAll[i];

       _strUL.appendChild(iteamLi);

    }

}

//挑转

function skip(){

    var URL="http://www.baidu.com/s?ie=UTF-8&wd=";

      if(strUl.innerHTML==" "){

          window.location.href=URL;

      }else{

        URL="http://www.baidu.com/s?ie=UTF-8&wd="+strUl.innerHTML;

        window.location.href=URL;

      }

}

以上就是“JavaScript怎么实现智能搜索框”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯