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知识点之&quot;深入理解作用域链&quot;的介绍
Apr 23 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
JavaScript中textRange对象使用方法小结
Mar 24 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 jQuery
jquery学习笔记之无new构建详解
Dec 07 jQuery
JS中实现一个下载进度条及播放进度条的代码
Jun 10 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
PHP注释实例技巧
2008/10/03 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python3 操作符重载方法示例
2017/11/23 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
本科生职业生涯规划书范文
2014/01/21 职场文书
政府法律服务方案
2014/06/14 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers