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 动态table添加colspan\rowspan 参数的方法
Jul 25 Javascript
某人初学javascript的时候写的学习笔记
Dec 30 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 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
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
mongodb和php的用法详解
2019/03/25 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
基于python+selenium的二次封装的实现
2020/01/06 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
J2EE中常用的名词进行解释
2015/11/09 面试题
yy结婚证婚词
2014/01/10 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
离婚协议书格式
2015/01/26 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python