您好,登錄后才能下訂單哦!
今天小編給大家分享一下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 部分
/*
** date:2021.12.20
** name:@前端小白?
*/
//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怎么實現智能搜索框”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。