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 相关文章推荐
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
Feb 06 Javascript
神奇的7个jQuery 3D插件整理
Jan 06 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
DWR中各种java方法的调用
May 04 Javascript
jQuery select自动选中功能实现方法分析
Nov 28 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 Javascript
js判断在哪个浏览器打开项目的方法
Jan 21 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
Aug 13 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程序
2006/10/09 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
学习ExtJS 访问容器对象
2009/10/07 Javascript
JS编程小常识很有用
2012/11/26 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
浅谈Node Inspector 代理实现
2017/10/19 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python数据库小程序源代码
2019/09/15 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
详解Anaconda 的安装教程
2020/09/23 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
如何提高SQL Server的安全性
2016/07/25 面试题
公司领导推荐信
2013/11/12 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
大学生实习介绍信
2015/05/05 职场文书
投诉书格式范本
2015/07/02 职场文书
基层党建工作简报
2015/07/21 职场文书
高三生物教学反思
2016/02/22 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python