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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
Mar 02 Javascript
自定义刻度jQuery进度条及插件
Sep 02 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
利用js判断手机是否安装某个app的多种方案
Feb 13 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
Express URL跳转(重定向)的实现方法
Apr 07 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 Javascript
微信小程序select下拉框实现源码
Nov 08 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
fgetcvs在linux的问题
2012/01/15 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
微信小程序template模版的使用方法
2019/04/13 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
python实现桌面壁纸切换功能
2019/01/21 Python
详解用python写一个抽奖程序
2019/05/10 Python
python线程的几种创建方式详解
2019/08/29 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
初中升旗仪式演讲稿
2014/05/08 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
公司借条范本
2015/05/25 职场文书
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers