仿百度搜索关键字弹出符合条件的内容

150 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

在百度等网站搜索时,输入一个字,系统会弹出包含该关键字的一些搜索词。

这个是功能性的需求啦!!需要后端的数据库配合完成的啦!但是咱做个假的也是一种学习进步嘛!真心觉得这个功能不仅仅是对用户超友好(尤其是在商城类的项目中),对我这种开发小白的吸引力也是超大的。感觉超厉害的,所以就去学习了一下啦!! 主要还是用的JS去对接一下数据(当然,这篇笔记里面是用的假数据啦!!主要用于测试功能嘛),然后进行字符的匹配,给用户提供一些简介明了的选择

仿百度搜索框输入关键字自动弹出符合条件的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="box">
    <input type="text" id="inp">
    <input type="button" value="百度一下">
    <ul id="ul"></ul>
</div>
<script src="JavaScript/JavaScript.js"></script>
<script>
    var list=["吃火锅","吃火锅","火锅","吃123"];
    // 键盘抬起事件
    $myid("inp").onkeyup=function () {
        console.log(this.value);
        // 优化3:删除之前列表,显示新的列表
        $myid("ul").innerHTML="";
    //    1、根据关键字显示搜索列表的关键字
        var newList=[];
        var keyWord=this.value;
        for (var i =0;i<list.length;i++){
            //找包含关键字的
            /*if (list[i].indexOf(keyWord)!==-1) {

            }*/
            //找以关键字开头
            if (list[i].indexOf(keyWord)===0){
                newList.push(list[i]);
            }
        }
        //优化4:当长度为0时,不显示列表
        if (keyWord.length===0){
            return;
        }
        console.log(newList);
        //2、根据新数组创建列表
        newList.forEach(function (item,i) {
          var liObj = document.createElement("li");
          liObj.innerText=item;
          $myid("ul").appendChild(liObj);
          //鼠标移上去,显示背景颜色
          liObj.onmouseover=function () {
              this.style.backgroundColor="pink";
          };
            //鼠标移下来,背景颜色消失
          liObj.onmouseout=function () {
              this.style.backgroundColor="";
          }
        });
        }
</script>
</body>
</html>

list中的内容可以自己定义 该案例只适用于中文(你如果觉得开心也可以定义英文)