今天的效果如下:

这个案例的要点有两个:

一是使用CSS显示样式

二是使用js比较输入的内容和数组中的内容使得包含输入内容的数据显示出来

首先来看CSS显示样式的难点:

两个div的接触部分,要想让它们无缝隙接触,就需要设置float:left

两个div盒子左右两侧的圆角边框,我们需要分别为border-top-left-radius等设置值,这样就大致得到了搜索框的样式,剩下的细节可以去代码中查看~

接着来看JS进行比较的部分:

总的思想呢,就是当输入内容时使下方显示搜索框,显示匹配的数据;不输入或输入数据不匹配时,不显示数据或显示暂无数据;搜索框失去焦点时使下方的搜索框消失

  1. 当我们在搜索框中输入内容时,我们可以调用onkeyup函数,先使下方的搜索框display属性值为block;
    然后在其中调用forEach遍历数组中的所有数据,通过value获得输入的内容,调用indexOf将该内容与数组中的数据进行比较,若有匹配项的话,其返回值是数组中数据的下标,否则为-1;
    若有匹配项的话,我们可以利用innerHTML,在下面的显示框中添加p标签,p中的内容是匹配的数据;如果没有就返回内容是‘暂无数据’的p标签
  2. 当该搜索框失去焦点时,我们令下方搜索框的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案例】之搜索的数据显示相关推荐

  1. JavaScript实现百度搜索框提示

    案例---百度搜索框提示 文章目录 一.代码 二.代码解释 效果图(百度): 输入aa后底下就会出现相对应和aa有关系的一些提示. 一.代码 <!DOCTYPE html> <htm ...

  2. javascript案例_如何在JavaScript中使用增强现实-一个案例研究

    javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...

  3. 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小

    前言 今天来给大家盘点三个JavaScript案例,分别是实现限时秒杀.定时跳转.改变盒子大小案例,一起来看看吧! 一.实现限时秒杀案例 1.在淘宝网中,商家为了促销经常搞一些活动,例如限时秒杀是常见 ...

  4. [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994

    [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994 唉--之前写过笔记总结的问题,还是又卡住了. 自挂东南枝-- 题目地址: Rotting Oranges 题目如下: ...

  5. JavaScript案例之电影院电子选票

    JavaScript案例之电影院电子选票 源码: <!doctype html> <html lang="en"> <head><meta ...

  6. 如何通过JavaScript获取搜索引擎搜索关键词

    获取页面的搜索引擎搜索关键词 要想获取当前页面的搜索引擎搜索关键词,首先要获取到当前页面的来源地址,我们可以通过document.referrer来获得.取到来源URL地址后,可以根据&进行数 ...

  7. JavaScript案例之抽奖机

    JavaScript案例之抽奖机 源码: <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  8. JavaScript案例之使用验证码进行简单判断

    JavaScript案例之使用验证码进行简单判断 源代码: <!DOCTYPE html> <html><head><meta charset="u ...

  9. 杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播

    JavaScript案例之跑马灯左右无缝连接 效果图: 思路: 1.先做界面 1.1 制作一个大盒子,进行存放整个图片及按钮区域 1.2 制作两个按钮和中间区域盒子 1.3 中间区域盒子中使用无序列表 ...

  10. HTML+JavaScript案例

    HTML: 用户注册: <!DOCTYPE html> <html><head><meta charset="utf-8" />&l ...

最新文章

  1. 【夯实Mysql基础】mysql explain执行计划详解
  2. 该死的java String
  3. 一、搭建Python环境和安装Pycharm
  4. 使用 BOOST.ASSERT 机制替换库断言
  5. python 进行一元线性回归并输出相关结果_Python实现一元线性回归实战
  6. html5判断file选择状态,HTML input type=file选择图片立即显示
  7. python重新运行安装_无法重新安装Python?
  8. 数据库mysql:MySQL软件安装
  9. 知乎 Hive Metastore 实践:从 MySQL 到 TiDB
  10. python 描述统计_Python统计学-004:描述统计-众数
  11. J2EE部署项目至Tomcat报错 Unable to read TLD META-INF/c tld
  12. 用双十一的故事串起碎片的网络协议(中)
  13. [论文笔记]JED:Towards Real-Time Multi-Object Tracking
  14. C语言中char字符为0时的情况,c语言中char的用法
  15. 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解 道翰天琼认知智能api机器人接口1。
  16. 动画七、动画的PropertyValuesHolder与Keyframe
  17. 【初学者知识】了解一下BASIC语言
  18. golang力扣leetcode 1823.找出游戏的获胜者
  19. 【晶振不起振原因分析】
  20. SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

热门文章

  1. 第一周礼拜四 神藉着祂的众仆人行事(上)
  2. xcode14 Command Swift Driver Compilation Requirements emitted errors but did not ret
  3. ABBYY15Mac最新版OCR文字识别软件
  4. (20201209已解决)从window访问wsl地址
  5. 【HNOI模拟By lyp】Day1
  6. 数学建模学习17(最短距离、BP神经网络)
  7. H.264压缩算法详解
  8. 精致生活品味相伴,Barsetto百胜图BAC025B胶囊咖啡机测评
  9. linux缺页异常,操作系统缺页异常
  10. linux获取ip上网,linux dhcp 获取ip地址能上网,设置静态ip地址则不能上网