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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
Apr 02 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
javascript获取下拉列表框当中的文本值示例代码
Jul 31 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
Sep 04 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
May 11 Javascript
JavaScript ES6中CLASS的使用详解
Nov 22 Javascript
解决VUEX刷新的时候出现数据消失
Jul 03 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
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
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
node.js超时timeout详解
2014/11/26 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
详解Python发送邮件实例
2016/01/10 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
公司董事长职责
2013/12/12 职场文书
大学生旷课检讨书
2014/01/22 职场文书
执行总经理岗位职责
2014/02/03 职场文书
电视购物广告词
2014/03/19 职场文书
教师个人读书活动总结
2014/07/08 职场文书
担保书范本
2015/01/20 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers