【javaScript案例】之搜索的数据显示
今天的效果如下:
这个案例的要点有两个:
一是使用CSS显示样式
二是使用js比较输入的内容和数组中的内容使得包含输入内容的数据显示出来
首先来看CSS显示样式的难点:
两个div的接触部分,要想让它们无缝隙接触,就需要设置float:left
;
两个div盒子左右两侧的圆角边框,我们需要分别为border-top-left-radius
等设置值,这样就大致得到了搜索框的样式,剩下的细节可以去代码中查看~
接着来看JS进行比较的部分:
总的思想呢,就是当输入内容时使下方显示搜索框,显示匹配的数据;不输入或输入数据不匹配时,不显示数据或显示暂无数据;搜索框失去焦点时使下方的搜索框消失
- 当我们在搜索框中输入内容时,我们可以调用
onkeyup
函数,先使下方的搜索框display属性值为block;
然后在其中调用forEach
遍历数组中的所有数据,通过value获得输入的内容,调用indexOf
将该内容与数组中的数据进行比较,若有匹配项的话,其返回值是数组中数据的下标,否则为-1;
若有匹配项的话,我们可以利用innerHTML,在下面的显示框中添加p标签,p中的内容是匹配的数据;如果没有就返回内容是‘暂无数据’的p标签 - 当该搜索框失去焦点时,我们令下方搜索框的display属性值为none就可以了
代码如下:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.container {width: 500px;height: 160px;padding: 40px;margin: 100px auto}#one {width: 268px;height: 33px;float: left;border: 0;border-top-left-radius: 20px;border-bottom-left-radius: 20px;background-color: rgb(245, 246, 247);outline: none;}#search {background-color: rgb(252, 85, 49);color: white;width: 70px;height: 35px;line-height: 35px;text-align: center;font-size: 13px;border-radius: 20px;border-top-left-radius: 0;border-bottom-left-radius: 0;float: left;}#show {width: 270px;height: 170px;border: 1px solid rgba(77, 76, 76, 0.459);display: none;margin-top: 40px;overflow: hidden;}#show div{width: 100%;height: 40px;line-height: 40px;text-indent: 1em;display: block;}#show div:hover{background-color: rgb(240, 240, 245);cursor:pointer;}</style>
</head><body><div class="container"><div id="nav"><input type="text" id="one" placeholder="请输入课程" autocomplete="on"><div id="search">搜索</div></div><div id="show"><div></div></div></div><script>let arr = ['蛋糕便宜卖', '想吃水果', '2333', 'css精品课程','2个小朋友','这儿有2个面包','我们一起','乐队的夏天','天气真好'];let one = document.getElementById("one");let show = document.getElementById("show")one.onfocus = function () {show.style.display = "block";one.style.border = "1px coral solid"one.onkeyup = function () {let str = '';let tem=false;arr.forEach((item) => {let index = item.indexOf(one.value);if (~index) {tem=true;str+='<div>'+item+'</div>';//每次都更新str的值,所以不用担心重复}})//很重要if(one.value=='' || !tem){show.innerHTML='<div>'+'暂无结果'+'</div>';}else{show.innerHTML=str;}}}//onblur 的事件会在对象失去焦点时发生one.onblur = function () {show.style.display = "none"one.style.border = "1px transparent solid"show.innerHTML='';}</script>
</body></html>
【javaScript案例】之搜索的数据显示相关推荐
- JavaScript实现百度搜索框提示
案例---百度搜索框提示 文章目录 一.代码 二.代码解释 效果图(百度): 输入aa后底下就会出现相对应和aa有关系的一些提示. 一.代码 <!DOCTYPE html> <htm ...
- javascript案例_如何在JavaScript中使用增强现实-一个案例研究
javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...
- 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小
前言 今天来给大家盘点三个JavaScript案例,分别是实现限时秒杀.定时跳转.改变盒子大小案例,一起来看看吧! 一.实现限时秒杀案例 1.在淘宝网中,商家为了促销经常搞一些活动,例如限时秒杀是常见 ...
- [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994
[JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994 唉--之前写过笔记总结的问题,还是又卡住了. 自挂东南枝-- 题目地址: Rotting Oranges 题目如下: ...
- JavaScript案例之电影院电子选票
JavaScript案例之电影院电子选票 源码: <!doctype html> <html lang="en"> <head><meta ...
- 如何通过JavaScript获取搜索引擎搜索关键词
获取页面的搜索引擎搜索关键词 要想获取当前页面的搜索引擎搜索关键词,首先要获取到当前页面的来源地址,我们可以通过document.referrer来获得.取到来源URL地址后,可以根据&进行数 ...
- JavaScript案例之抽奖机
JavaScript案例之抽奖机 源码: <!DOCTYPE html> <html lang="en"> <head><meta cha ...
- JavaScript案例之使用验证码进行简单判断
JavaScript案例之使用验证码进行简单判断 源代码: <!DOCTYPE html> <html><head><meta charset="u ...
- 杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播
JavaScript案例之跑马灯左右无缝连接 效果图: 思路: 1.先做界面 1.1 制作一个大盒子,进行存放整个图片及按钮区域 1.2 制作两个按钮和中间区域盒子 1.3 中间区域盒子中使用无序列表 ...
- HTML+JavaScript案例
HTML: 用户注册: <!DOCTYPE html> <html><head><meta charset="utf-8" />&l ...
最新文章
- 【夯实Mysql基础】mysql explain执行计划详解
- 该死的java String
- 一、搭建Python环境和安装Pycharm
- 使用 BOOST.ASSERT 机制替换库断言
- python 进行一元线性回归并输出相关结果_Python实现一元线性回归实战
- html5判断file选择状态,HTML input type=file选择图片立即显示
- python重新运行安装_无法重新安装Python?
- 数据库mysql:MySQL软件安装
- 知乎 Hive Metastore 实践:从 MySQL 到 TiDB
- python 描述统计_Python统计学-004:描述统计-众数
- J2EE部署项目至Tomcat报错 Unable to read TLD META-INF/c tld
- 用双十一的故事串起碎片的网络协议(中)
- [论文笔记]JED:Towards Real-Time Multi-Object Tracking
- C语言中char字符为0时的情况,c语言中char的用法
- 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解 道翰天琼认知智能api机器人接口1。
- 动画七、动画的PropertyValuesHolder与Keyframe
- 【初学者知识】了解一下BASIC语言
- golang力扣leetcode 1823.找出游戏的获胜者
- 【晶振不起振原因分析】
- SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
热门文章
- 第一周礼拜四 神藉着祂的众仆人行事(上)
- xcode14 Command Swift Driver Compilation Requirements emitted errors but did not ret
- ABBYY15Mac最新版OCR文字识别软件
- (20201209已解决)从window访问wsl地址
- 【HNOI模拟By lyp】Day1
- 数学建模学习17(最短距离、BP神经网络)
- H.264压缩算法详解
- 精致生活品味相伴,Barsetto百胜图BAC025B胶囊咖啡机测评
- linux缺页异常,操作系统缺页异常
- linux获取ip上网,linux dhcp 获取ip地址能上网,设置静态ip地址则不能上网