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 select常用操作控制代码
Mar 16 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
Dec 29 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
详解Bootstrap按钮
Jan 04 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
基于JavaScript表单脚本(详解)
Oct 18 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
javascript实现电脑和手机版样式切换
Nov 10 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
Vue通过provide inject实现组件通信
Sep 03 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
xajax写的留言本
2006/11/25 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
小程序实现密码输入框
2020/11/16 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
校长师德师风自我剖析材料
2014/09/29 职场文书
建筑工地文明标语
2014/10/09 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
地球上的星星观后感
2015/06/02 职场文书
在职证明书模板
2015/06/15 职场文书
2019年大学推荐信
2019/06/24 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android