jsonp实现百度下拉框功能的方法分析


Posted in Javascript onMay 10, 2019

本文实例讲述了jsonp实现百度下拉框功能的方法。分享给大家供大家参考,具体如下:

思路就是获取用户输入,然后根据用户输入调用百度的一个接口jsonp实现跨域请求,然后将百度返回给的内容渲染数据到视图。需要注意的就是,发送请求的时候记得编码用户输入的内容

var obj=document.querySelector('#user-input');
var body=document.querySelectorAll('body')[0];
var ul=document.querySelector('#ul');
var inner='';
function render(data){
    //删除前一次请求的li的内容
    if(ul.innerHTML!=''){
      ul.innerHTML='';
    }
    for(let i = 0, length1 = data.s.length; i < length1; i++){
      var li=document.createElement('li');
      li.innerHTML=data.s[i];
      ul.appendChild(li);
    }
}
obj.addEventListener('keyup',function(){
    if(document.querySelector('#request')){
      body.removeChild(document.querySelector('#request'));
    }
      var script=document.createElement('script');
      script.id="request";
      script.src="http://unionsug.baidu.com/su?wd="+encodeURI(obj.value.trim())+'&p=3&cb=render';
      body.appendChild(script);
});
//利用冒泡添加事件。
ul.addEventListener('click',function(e){
    var e=e||window.event;
    window.location.href="https://www.baidu.com/s?word=" rel="external nofollow" +encodeURI(e.target.innerHTML);
});
<style type="text/css">
  *{
          margin: 0;
          padding: 0;
  }
  ul{
          margin-left: 10px;
          transition: all 1s ease;
  }
    input{
          width: 300px;
          height: 40px;
          line-height: 40px;
          background: #4caf50a6;
          outline: none;
          border: none;
          border-radius: 10px;
          padding-left: 15px;
          color: white;
          font-size: 20px;
    }
    li{
          cursor: pointer;
          transition: all 1s ease;
          list-style: none;
          width: 280px;
          height: 30px;
          line-height: 30px;
          background: #8acb8da8;
          color: #888e4a;
          padding-left: 10px;
    }
    li:hover{
          background: #64a968;
          color: #caf1cc;
    }
    input::-webkit-input-placeholder{
      color:white;
    }
    input::-moz-placeholder{  /* Mozilla Firefox 19+ */
      color:white;
    }
    input:-moz-placeholder{  /* Mozilla Firefox 4 to 18 */
      color:white;
    }
    input:-ms-input-placeholder{ /* Internet Explorer 10-11 */ 
      color:white;
    }
</style>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
使用jquery 简单实现下拉菜单
Jan 14 Javascript
js获取微信版本号的方法
May 12 Javascript
jQuery实现的淡入淡出二级菜单效果代码
Sep 15 Javascript
javascript实现的左右无缝滚动效果
Sep 19 Javascript
javascript构造函数以及原型对象的理解
Jan 13 Javascript
详解Node.js中exports和module.exports的区别
Apr 19 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
JavaScript控制台的更多功能
Apr 28 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 #Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 #Javascript
Angular4.0动画操作实例详解
May 10 #Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 #Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 #Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
May 10 #Javascript
Vue项目中配置pug解析支持
May 10 #Javascript
You might like
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
PyTorch预训练的实现
2019/09/18 Python
python实现tail -f 功能
2020/01/17 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
python openpyxl模块的使用详解
2021/02/25 Python
Whistles官网:英国女装品牌
2020/08/14 全球购物
校园环保建议书
2014/05/14 职场文书
法人代表任命书范本
2014/06/05 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android