首页 > 其他分享 >手撕波波哥JS作业2-点击事件实现某块内容显示(两种方式)二

手撕波波哥JS作业2-点击事件实现某块内容显示(两种方式)二

时间:2023-12-20 18:07:44浏览次数:37  
标签:none btn 某块 波波 li let JS display content2

第二种方式(div)

div形式实现(div的display为none和block)

完整代码

<div>
    <ul id="li_btn_main">
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
        <li>555</li>
    </ul>
</div>

<div class="content2" style="background-color: rgb(24, 133, 228);"></div>
<div class="content2" style="background-color: rgb(26, 199, 69);"></div>
<div class="content2" style="background-color: rgb(121, 28, 145);"></div>
<div class="content2" style="background-color: rgb(190, 30, 65);"></div>
<div class="content2" style="background-color: rgb(199, 201, 202);"></div>
*{
    padding: 0;
    margin: 0px auto;
}

#li_btn_main{
    border: 1px solid red ;
    background-color: aqua;
    width: 800px;
    height: 100px;

    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
#li_btn_main li{
    border: 1px dashed green;
    background-color: rgb(149, 149, 151);
    width: 100px;
    height: 50px;

    list-style: none;
    text-align: center;
}

.content2{
    border: 1px solid rgb(8, 8, 8);
    width: 300px;
    height: 300px;
}
//隐藏5个content2,将display设置为none
function Clear(){
    for(let i = 0;i<5;i++){
        let content2_clear = document.getElementsByClassName("content2")[i];
        content2_clear.style.display = 'none';
    }
}

// 方法二:使用5个div来达到点击相应按钮来切换的效果
let color = ['red','green','yellow','white','pink'];
for(let i = 0;i<color.length;i++){
    let btn = document.getElementsByTagName("li")[i];
    let content2 = document.getElementsByClassName("content2")[i];
    btn.style.backgroundColor = color[i];
    btn.addEventListener('click',function(){
        Clear();       // 调用隐藏函数      
        content2.style.display = 'block';         // 设置当前点击的按钮所对应的content2显示
    })
}

实现效果图和注解

手撕波波哥JS作业2-点击事件实现某块内容显示(两种方式)二_div-display-block

手撕波波哥JS作业2-点击事件实现某块内容显示(两种方式)二_div-display-block_02

代码解析

//隐藏5个content2,将display设置为none
function Clear(){
    for(let i = 0;i<5;i++){
        let content2_clear = document.getElementsByClassName("content2")[i];
        content2_clear.style.display = 'none';
    }
}

// 方法二:使用5个div来达到点击相应按钮来切换的效果
let color = ['red','green','yellow','white','pink'];
for(let i = 0;i<color.length;i++){
    let btn = document.getElementsByTagName("li")[i];
    let content2 = document.getElementsByClassName("content2")[i];
    btn.style.backgroundColor = color[i];
    btn.addEventListener('click',function(){
        Clear();       // 调用隐藏函数      
        content2.style.display = 'block';   // 设置当前点击的按钮所对应的content2显示
    })
}

先在前面定义一个清空5个content2块显示方式的函数(将他们都隐藏显示)



function Clear(){ // 通过循环、class类属性的查找方式获取到5个content2块 // 设置display为none也就是不显示 for(let i = 0;i<5;i++){ let content2_clear = document.getElementsByClassName("content2")[i]; content2_clear.style.display = 'none'; } }



先定义一个颜色对象:let color = ['red','green','yellow','white','pink'];

使用for循环进行操作:for(let i = 0;i<color.length;i++){....}。for循环次数根据颜色对象长度来

for循环里:

  • 根据循环次数来查找li标签(5个),并赋值给btn
  • let btn = document.getElementsByTagName("li")[i];
  • 根据循环次数来查找div标签(5个),并赋值给content2
  • let content2 = document.getElementsByClassName("content2")[i];
  • 设置li标签的背景色(也可以在css中设置,这里为了方便在这设置了)
  • btn.style.backgroundColor = color[i];

手撕波波哥JS作业2-点击事件实现某块内容显示(两种方式)二_div-display-block_03

  • 然后就是给当前li标签添加点击事件(使用addEventListener方法)
  • btn.addEventListener('click',function(){...}
  • 点击事件里:
  • 先调用一次清空函数,将5个块都隐藏
  • Clear();
  • 设置对应的块显示(display设置为block)
  • content2.style.display = 'block';

自此,点击指定区域后所对应的块显示的,其他块隐藏的效果就实现了(其实应该在定义完清空函数的时候先调用一次清空函数的,这样子就不会将5个content2块给显示给用户看了)


标签:none,btn,某块,波波,li,let,JS,display,content2
From: https://blog.51cto.com/youyeye/8909265

相关文章

  • JS压缩谁最强?对比5款JS代码压缩工具
    JS压缩谁最强?对比5款JS代码压缩工具JS压缩,似乎是很简单的一个事情,通常在线就可以完成。但不同网站或工具提供的JS压缩,效果差异不小。本文,测试国内外5个JS在线压缩工具,看看谁的效果最好。测试用JS代码(注:这段代码来下面要测试的JShaman网站,以压缩这段代码为例,看不同的工具压缩后......
  • JS获取 URL 链接参数
    方法一源码:functionGetQueryString(name){varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)");varr=window.location.search.substr(1).match(reg);if(r!=null)returnunescape(r[2]);returnnull;}使用:consol......
  • js 视频录制
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title></title> </head> <body> <buttononclick="startRecording()">开始录像</button> <buttononclick="stopRecording(......
  • JS+CSS多行文本显示“更多”
    本代码展示最多显示3行,每行行高16px,3行总高48px,4行总高64px当文本行数大于3行,显示“更多”CSS:#CourseDesc{margin-top:5px;font-size:12px;position:relative;max-height:48px;line-height:16px;overflow:hidden;}#CourseDesc.temp{position:absolute;top......
  • js 处理对象数组 + map 筛选出指定字段数据 + filter过滤重复数据/指定数据
    constres=[{id:1,name:'zhangsan',age:16,gender:0},{id:1,name:'zhangsan',age:16,gender:0},{id:2,name:'lisi',age:20,gender:1}];获取res中的id和name/*[{"id&......
  • Koa.js 中的日志管理
    日志日志用来记录程序的运行信息。开发服务端程序,必须集成日志管理的功能,一旦系统出现故障可以及时排查问题所在。日志一般分为:访问日志:记录系统的访问记录。运行日志:输出系统运行时的一些信息错误日志:记录系统出错的状态一般我们都是通过nginx做负载均衡,它具备了记录访问日志的......
  • Newtonsoft.Json.JsonReaderException:“Bad JSON escape sequence: \*. Path '****'
    测试Json字符串msg:{"field1":"\\\9527\","field2":"\\\\\data\\","field3":"\r\n\\\G\\\d\\\","field4":"TESTTEST\\1TEST\\\GTEST\\\\GTEST2\\\\\TEST3\\......
  • js实现el-select选中的文本,一键复制
    <divclass="invite-buttom">请选择要复制的网站:<el-selectv-model="webValue"placeholder="请选择要复制的网站"><el-optionv-for="iteminformUrl.webInviteUrl"......
  • npmjs.com 网站
    npmjs.com提供了许多对日常开发非常有用的功能:包管理:你可以使用npm来安装、升级、卸载包。这些包可以是全局安装的,也可以是本地安装的。依赖控制:npm可以帮助你管理项目的依赖,使得代码部署变得更加容易。发布和维护包:如果你是一个开发者,npm也提供了命令行工具,让你......
  • 在Mapbox-gl-js中添加自定义图层
    在Mapbox-gl-js中添加自定义图层前言一、制作geojson地图二、使用Tippecanoe将geojson转换成vectortile(.pbf)文件三、使用mapbox-gl-js显示三、Mapbox-gl-js中根据矢量数据的属性过滤显示前言本文说明如何制作自定义的地图数据,并使用mapbox-gl-js进行显示一、制作geoj......