JS实现搜索关键词的智能提示功能

发布时间 - 2026-01-11 02:14:26    点击率:

最近在百度搜索的时候,当你输入一个字或者词的时候,他会给你们弹出一个下拉框出来,里面是和你相关的搜索提示

比如 我输入杨字,他会给我提示以下搜索提示

我尝试着用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>

效果展示:

关于这个练习我有以下几点思索

1.因为搜索热词提前被设定好,放在键值对里面,所以搜索的范围也就被限定了,这个可以再被加深,和数据库中的数据连接起来,搜索的的关键词直接从数据库中查询,这个具体怎么写我还没研究透,希望有经验的前辈可以指教。

2.关于这个代码的应用我觉得可以应用在用户查询搜索上,百度搜索就是一个很好的实例

3.代码毕竟是JS写的,如果用户的电脑将JS控件阻止了,效果也就不行了。

以上所述是小编给大家介绍的JS实现搜索关键词的智能提示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js  # 搜索关键词智能提示  # js文本框输入内容智能提示效果  # JS实现的自动打字效果示例  # Js 打字效果 逐一出现的文字  # JS实现的打字机效果完整实例  # js打字机效果代码  # JS实用案例之输入智能提示(打字机输出效果)  # 关键词  # 也就  # 他会  # 数据库中  # 小编  # 给我  # 很好  # 放在  # 我觉得  # 不吝赐教  # 在此  # 我有  # 要有  # 当你  # 和你  # 我用  # 给大家  # 请输入  # 弹出  # 几点 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: html如何与html链接_实现多个HTML页面互相链接【互相】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何挑选最适合建站的高性能VPS主机?  昵图网官方站入口 昵图网素材图库官网入口  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Mybatis 中的insertOrUpdate操作  Python文本处理实践_日志清洗解析【指导】  深圳网站制作的公司有哪些,dido官方网站?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Thinkphp 中 distinct 的用法解析  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Python数据仓库与ETL构建实战_Airflow调度流程详解  Swift开发中switch语句值绑定模式  如何获取免费开源的自助建站系统源码?  高端建站如何打造兼具美学与转化的品牌官网?  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何批量查询域名的建站时间记录?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  Laravel模型事件有哪些_Laravel Model Event生命周期详解  原生JS获取元素集合的子元素宽度实例  如何快速搭建安全的FTP站点?  微信小程序 HTTPS报错整理常见问题及解决方案  LinuxShell函数封装方法_脚本复用设计思路【教程】  魔方云NAT建站如何实现端口转发?  如何彻底卸载建站之星软件?  Python并发异常传播_错误处理解析【教程】  独立制作一个网站多少钱,建立网站需要花多少钱?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel怎么实现验证码(Captcha)功能  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何用IIS7快速搭建并优化网站站点?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何实现事件和监听器?(Event & Listener实战)  长沙做网站要多少钱,长沙国安网络怎么样?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  javascript基本数据类型及类型检测常用方法小结  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议