模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定

链接

下面是我闲暇时总结的JS、CSS、算法总结,欢迎大家点赞、star~~

  • 有趣实用的CSS效果
  • 前端博客 传送门
  • LeetCode个人题解 传送门

讲解如何利用百度接口仿写一个搜索联想词功能

效果图

模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定_第1张图片

HTML部分

    <div class="wrapper">
        <input type="text " id="btn">
        <ul>
        ul>
    div>

CSS样式部分

        * {
            padding: 0;
            margin: 0;
        }
        .wrapper {
            position: absolute;
            margin-left: -260px;
            left: 50%;
            top: 30%;
        }
        #btn {
            width: 560px;
            padding: 10px 10px;
            border: 1px solid rgb(45, 129, 240);
        }

模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定_第2张图片

JS逻辑部分(重点)

  • 1.我们需要给输入浪添加一个事件—onkeyup(会在键盘按键被松开时发生。)
  • 2.为该事件添加对应出发接口请求的函数(涉及到了跨域的问题)
  • 3.将接口请求回来的数据进行装饰,生出一个列表展示即可

一、测试onkeyup事件(实时获取内容)

  • 实时获取输入框的内容
btn.onkeyup = function () {
    var value = this.value;
    console.log(value);
}

效果如下:
模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定_第3张图片

  • 每次获取到内容时,就带着该内容去进行接口请求
btn.onkeyup = function () {
	var value = this.value;
	var oScript = document.createElement('script');
	oScript.src = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=' + value + '&cb=aa'
	document.body.appendChild(oScript)
}
function aa(data) {
	console.log(data);
}

这里我们所看到地址文件,是这样获取的:模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定_第4张图片

这么长的地址我们并不是全要的,我们只要wd=cb=部分 :比如:

下面是一段超长的链接

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=onkeyup&sugmode=2&json=1&p=3&sid=1443_26909_21081_26350_26925&req=2&bs=onkeyup&pbs=onkeyup&csor=7&pwd=onkeyup&cb=jQuery1102041548312872624815_1533627722834&_=1533627722871

它经过删减后为:

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=onkeyup&&cb=jQuery

步骤三:从输出我们可以看到,我们只需要传回来的数据s数组,所以我们对他进行遍历,拼接到

  • 之中,并加他插入
  • 你可能感兴趣的:(模拟百度搜索框自动联想功能,原生js+jsonp轻松搞定)