JS实现搜索关键词的智能提示功能


Posted in Javascript onJuly 07, 2017

最近在百度搜索的时候,当你输入一个字或者词的时候,他会给你们弹出一个下拉框出来,里面是和你相关的搜索提示

比如 我输入杨字,他会给我提示以下搜索提示

JS实现搜索关键词的智能提示功能

我尝试着用JavaScript做了一个类似的练习,以下是我用VS2013写的代码,有不对的地方,请不吝赐教。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
onload = function () {
function handle() {
var keyWords = { 
"杨忠科": ["杨忠科的视频", "杨忠科的微博", "杨忠科的邮箱"],
"杨": ["杨利伟", "杨振宇", "杨过"],
"杨忠": ["杨忠科", "杨忠学", "杨忠爱国"],
"杨忠科爱":["杨忠科爱祖国","杨忠科爱首都","杨忠科爱学习"]
};
if (keyWords[this.value]) {
//判断body中是否有这个层,如果有就删掉了
if (document.getElementById('dv')) {
document.body.removeChild(document.getElementById('dv'));
}
//开始创建层
var dvObj = document.createElement('div');
dvObj.id = 'dv';
dvObj.style.width = '300px';
//dvObj.style.height = '200px'; //将来可以不要
dvObj.style.border = '1px solid red';
document.body.appendChild(dvObj);
//脱离文档流
dvObj.style.position = 'absolute';
dvObj.style.left = this.offsetLeft + 'px';
dvObj.style.top = this.offsetHeight + this.offsetTop + 'px';
//循环创建
for (var i = 0; i < keyWords[this.value].length; i++) {
//创建一个可以存文本的标签
var pObj = document.createElement('p');
pObj.innerText = keyWords[this.value][i];
//p标签要有小手,还有高亮显示
pObj.style.cursor = 'pointer';
pObj.style.margin = '5px';
pObj.onmouseover = function () {
this.style.backgroundColor = 'red';
};
pObj.onmouseout = function () {
this.style.backgroundColor = '';
}
dvObj.appendChild(pObj); //把p标签加到层中
}
//创建可以显示文件的标签
}
}
//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。 
if (/msie/i.test(navigator.userAgent)) //ie浏览器 
{
document.getElementById('txt').onpropertychange = handle
}
else {//非ie浏览器,比如Firefox 
document.getElementById('txt').addEventListener("input", handle, false);
}
}; 
</script>
</head>
<body>
<span id="msg"></span>
请输入搜索关键字<input type="text" name="name" value="" style="width:300px;height:30px;font-size:25px; border:1px solid green" id="txt"/>百度一下
</body>
</html>

效果展示:

JS实现搜索关键词的智能提示功能

关于这个练习我有以下几点思索

1.因为搜索热词提前被设定好,放在键值对里面,所以搜索的范围也就被限定了,这个可以再被加深,和数据库中的数据连接起来,搜索的的关键词直接从数据库中查询,这个具体怎么写我还没研究透,希望有经验的前辈可以指教。

2.关于这个代码的应用我觉得可以应用在用户查询搜索上,百度搜索就是一个很好的实例

3.代码毕竟是JS写的,如果用户的电脑将JS控件阻止了,效果也就不行了。

以上所述是小编给大家介绍的JS实现搜索关键词的智能提示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
js的三种继承方式详解
Jan 21 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
详解swipe使用及竖屏页面滚动方法
Jun 28 Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 Javascript
vue中typescript装饰器的使用方法超实用教程
Jun 17 Javascript
layui动态表头的实现代码
Aug 22 Javascript
原生js+canvas实现下雪效果
Aug 02 Javascript
vue.js国际化 vue-i18n插件的使用详解
Jul 07 #Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 #Javascript
微信小程序之绑定点击事件实例详解
Jul 07 #Javascript
分享19个JavaScript 有用的简写写法
Jul 07 #Javascript
Vue.js数据绑定之data属性
Jul 07 #Javascript
js实现从左向右滑动式轮播图效果
Jul 07 #Javascript
JavaScript实现图片无缝滚动效果
Jul 07 #Javascript
You might like
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
详细探究Python中的字典容器
2015/04/14 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
用Python写一个自动木马程序
2019/09/17 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
研究生自荐信
2013/10/09 职场文书
美术师范毕业生自荐信
2013/11/16 职场文书
中学生差生评语
2014/01/30 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
群众路线对照检查材料
2014/09/22 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
市场部经理岗位职责
2015/02/02 职场文书
大学军训口号大全
2015/12/24 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python