溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript怎么實現(xiàn)智能搜索框

發(fā)布時間:2022-03-03 16:26:37 來源:億速云 閱讀:149 作者:iii 欄目:web開發(fā)

今天小編給大家分享一下JavaScript怎么實現(xiàn)智能搜索框的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

 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>

    <!-- 頁面結(jié)構(gòu) -->

    <div class="search">

        <input class="search-input" type="text" autofocus="autofocus" placeholder="請輸入關(guān)鍵字,用空格間隔關(guān)鍵字" 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 部分

/*

**  date:2021.12.20

**  name:@前端小白?

*/

//1.2 分析數(shù)據(jù)結(jié)構(gòu)

var arr=[

    "薇某某偷逃稅被罰13.41億",

    "延安新增確診病例軌跡公布",

    "澳門回歸22周年",

    "蕾神之錘vs宏慌之力,結(jié)局如何敬請期待",

    "我很懷疑是不是汪峰汪半壁又要開演唱會了",

    "起底吳某凡吳某凡吳某凡背后的瘋狂飯圈",

    "環(huán)球時報評王某宏必須涼"

]

//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拆分關(guān)鍵字

    var keysArr = keywords.split(" ");

    // 2.5關(guān)鍵字去重

    keysArr=removeRepetition(keysArr);

    // 2.6從數(shù)據(jù)源匹配結(jié)果

    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);

// 工具函數(shù)

// 消除中間空格

function trimAll(_keywords){

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

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

    }

return _keywords;   

}

// 消除關(guān)鍵字重復(fù)

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;

}

//匹配結(jié)果

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);

    }

}

//挑轉(zhuǎn)

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怎么實現(xiàn)智能搜索框”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI