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去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
jQuery UI Bootstrap是什么?
Jun 17 Javascript
14 个折磨人的 JavaScript 面试题
Aug 08 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
Sep 29 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
php数据库抽象层 PDO
2011/05/07 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
详解Python编程中time模块的使用
2015/11/20 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python装饰器常见使用方法分析
2019/06/26 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Python高并发和多线程有什么关系
2020/11/14 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
标准毕业生自荐信
2014/06/24 职场文书
公司委托书格式范本
2014/09/16 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
Javascript 解构赋值详情
2021/11/17 Javascript
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技