JS实现百度搜索框关键字推荐


Posted in Javascript onFebruary 17, 2020

本文实例为大家分享了JS实现百度搜索框关键字推荐的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #box {
      width: 450px;
      margin: 200px auto;
    }
 
    #txt {
      width: 350px;
    }
 
    #pop {
      width: 350px;
      border: 1px solid red;
    }
 
    #pop ul {
      margin: 10px;
      padding: 0px;
      width: 200px;
      list-style-type: none;
 
    }
 
    #pop ul li {
 
    }
  </style>
</head>
<body>
 
<div id="box">
  <input type="text" id="txt" value="">
  <input type="button" value="搜索" id="btn">
 
</div>
 
<script src="common.js"></script>
<script>
  var keyWords = ["我是真滴帅啊", "我是真滴牛批啊啊啊", "中国共产党万岁啊啊啊", "我咋能这么优秀嘞??",
    "中国国民党就不行嘿嘿嘿", "苹果好吃吗", "我滴个龟龟耶", "苹果手机很好用!"];
  my$("txt").onkeyup = function () {
    //每次键盘抬起都判断有没有新创建的div,有则删除所有
    if (my$("dv")) {
      my$("box").removeChild(my$("dv"));
    }
    //获取文本框内容
    var text = this.value;
    //添加一个用来存对应数据的空数组
    var tempArr = [];
    //比对文本是否一致
    for (var i = 0; i < keyWords.length; i++) {
      //
      if (keyWords[i].indexOf(text) == 0) {
        tempArr.push(keyWords[i]);
      }
    }
    //如果文本框为空或者数组五元素,则删除所有div
    if (this.value.length == 0 || tempArr.length == 0) {
      if (my$("dv")) {
        my$("box").removeChild(my$("dv"));
      }//end if
      return;
    }// end if
 
    //遍历临时数组,创建div
    var dvObj = document.createElement("div");
    my$("box").appendChild(dvObj);
    dvObj.id = "dv";
    dvObj.style.width = "350px";
    // dvObj.style.height = "100px";  //自然撑开,不用给高
    dvObj.style.border = "1px solid red";
 
    //循环遍历临时数组,在创建的div中添加p标签
    for (var i = 0; i < tempArr.length; i++) {
      var pObj = document.createElement("p");
      dvObj.appendChild(pObj);
      setInnerText(pObj, tempArr[i]);
      pObj.style.fontSize = "14px";
      pObj.style.margin = "0";
      pObj.style.padding = "0";
      pObj.style.cursor = "pointer";
      pObj.style.marginTop = "5px";
      pObj.style.marginLeft = "5px";
      pObj.onmouseover = function () {
        this.style.backgroundColor = "pink";
      };
      pObj.onmouseout = function () {
        this.style.backgroundColor = "";
      };
    }
  }
</script>
</body>
</html>

外部引入工具JS文件:

/*
* 根据id属性的值,返回对应的标签元素
* */
function my$(id) {
  return document.getElementById(id);
};
 
// 设置任意标签中的文本内容
function setInnerText(element, text) {
  // 判断浏览器是否支持这个属性
  if (typeof element.textContent == "undefined") {//不支持
    element.innerText = text;
  } else {//支持
    element.textContent = text;
  }
};
 
// 获取任意标签中的文本内容
function getInnerText(element) {
  if (typeof element.textContent == "undefined") {
    return element.innerText;
  } else {
    return element.textContent;
  }
};
 
//获取任意一个父级元素的第一个子级元素
function getFirstElementChild(element) {
  if (element.firstElementChild) {//IE8支持
    return element.firstElementChild;
  } else {//IE8不支持
    var node = element.firstChild;
    while (node && node.nodeType != 1) {//不是标签
      node = node.nextSibling;
    }
    return node;
  }
}
 
//获取任意一个父级元素的最后一个子级元素
function getLastElementChild(element) {
  if (element.lastElementChild) {
    return element.lastElementChild;
  } else {
    var node = element.lastChild;
    while (node && node.nodeType != 1) {
      node.previousSibling;
    }
    return node;
  }
}
 
//为任意元素绑定任意的事件。(元素,事件类型,处理函数)
function addEventListener(element, type, fn) {
  //判断浏览器是否支持这个方法
  if (element.addEventListener) {
    element.addEventListener(type, fn, false)
  } else if (element.attachEvent) {
    element.attachEvent("on" + type, fn)
  } else {
    element["on" + type] = fn;
  }
}
 
//为任意元素解绑事件
function removeEventListener(element, type, fnName) {
  if (element.removeEventListener) {
    element.removeEventListener(type, fnName, false);
  } else if (element.detachEvent) {
    element.detachEvent("on" + type, fnName);
  } else {
    element["on" + type] = null;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
node模块机制与异步处理详解
Mar 13 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
Mar 09 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
js实现移动端吸顶效果
Jan 08 Javascript
JS常见内存泄漏及解决方案解析
May 30 Javascript
vue实现自定义多选按钮
Jul 16 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 Javascript
js实现百度淘宝搜索功能
Feb 17 #Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 #Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 #Javascript
Vue 中使用 typescript的方法详解
Feb 17 #Javascript
vue框架中props的typescript用法详解
Feb 17 #Javascript
JS通用方法触发点击事件代码实例
Feb 17 #Javascript
JS前端广告拦截实现原理解析
Feb 17 #Javascript
You might like
用Zend Encode编写开发PHP程序
2010/02/21 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
destoon数据库表说明汇总
2014/07/15 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python中列表的含义及用法
2020/05/26 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
出国导师推荐信
2014/01/16 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
干部现实表现材料
2014/02/13 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
教师批评与自我批评
2014/10/15 职场文书
邀请函样本
2015/02/02 职场文书
北京天坛导游词
2015/02/12 职场文书
大一学生个人总结
2015/02/15 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
运动会观后感
2015/06/09 职场文书
高一语文教学反思
2016/02/16 职场文书
Python图片检索之以图搜图
2021/05/31 Python
如何自己动手写SQL执行引擎
2021/06/02 MySQL