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:以前写的xmlhttp池,代码
May 18 Javascript
在JavaScript中typeof的用途介绍
Apr 11 Javascript
js中关于一个分号的崩溃示例
Nov 11 Javascript
JS实现字体选色板实例代码
Nov 20 Javascript
获取当前点击按钮的id用this.id实现
Mar 17 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 Javascript
vue-ajax小封装实例
Sep 18 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
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中获得视频时间总长度的另一种方法
2011/09/15 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
Python文件去除注释的方法
2015/05/25 Python
Python工厂函数用法实例分析
2018/05/14 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
python 画图 图例自由定义方式
2020/04/17 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
Champion官网:美国冠军运动服装
2017/01/25 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
医学院毕业生自荐信
2013/11/08 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
商铺消防安全责任书
2014/07/29 职场文书
撤诉申请怎么写
2015/05/19 职场文书
行政上诉状范文
2015/05/23 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书