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 相关文章推荐
jQuery 改变CSS样式基础代码
Feb 11 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
JavaScript实现的搜索及高亮显示功能示例
Aug 14 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 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适配器模式介绍
2012/08/14 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP实现验证码校验功能
2017/11/16 PHP
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
django加载本地html的方法
2018/05/27 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
医学毕业生自我鉴定
2013/10/30 职场文书
毕业生的求职信范文分享
2013/12/04 职场文书
学生励志演讲稿
2014/01/06 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
公司禁烟通知
2015/04/23 职场文书
生活委员竞选稿
2015/11/21 职场文书
初一语文教学反思
2016/03/03 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
SpringBoot详解执行过程
2022/07/15 Java/Android