今日总结:Tab栏功能的实现(js)(借鉴)
<!DOCTYPE html > <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> button{ ... } .current{ } </style> </head> <body> <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> <button>按钮4</button> <button>按钮5</button> <script> //需求:鼠标放到哪个button上,改button变成黄色背景(添加类) var btnArr = document.getElementsByTagName("button"); //绑定事件 for(var i=0;i<btnArr.length;i++){ //要为每一个按钮绑定事件,所以用到了for循环 btnArr[i].onmouseover = function () { //【重要】排他思想:先把所有按钮的className设置为空,然后把我(this)这个按钮的className设置为current //排他思想和for循环连用 for(var j=0;j<btnArr.length;j++){ btnArr[j].className = ""; } this.className = "current"; //【重要】核心代码 } } //鼠标离开current时,还原背景色 for(var i=0;i<btnArr.length;i++){ //要为每一个按钮绑定事件,所以用到了for循环 btnArr[i].onmouseout = function () { //鼠标离开任何一个按钮时,就把按钮的背景色还原 this.className = ""; } } </script> </body> </html>
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } .box { width: 500px; height: 200px; border: 1px solid #ccc; margin: 50px auto; overflow: hidden; } ul { width: 600px; height: 40px; margin-left: -1px; list-style: none; } li { float: left; width: 101px; height: 40px; text-align: center; font: 600 18px/40px "simsun"; background-color: pink; cursor: pointer; } span { display: none; width: 500px; height: 160px; background-color: yellow; text-align: center; font: 700 100px/160px "simsun"; } .show { display: block; } .current { background-color: yellow; } </style> <script> window.onload = function () { //需求:鼠标放到上面的li上,li本身变色(添加类),对应的span也显示出来(添加类); //思路:1.点亮上面的盒子。 2.利用索引值显示下面的盒子。 var liArr = document.getElementsByTagName("li"); var spanArr = document.getElementsByTagName("span"); for(var i=0;i<liArr.length;i++){ //绑定索引值(新增一个自定义属性:index属性) liArr[i].index = i; liArr[i].onmouseover = function () { //1.点亮上面的盒子。 2.利用索引值显示下面的盒子。(排他思想) for(var j=0;j<liArr.length;j++){ liArr[j].className = ""; spanArr[j].className = ""; } this.className = "current"; spanArr[this.index].className = "show"; //【重要代码】 } } } </script> </head> <body> <div class="box"> <ul> <li class="current">鞋子</li> <li>袜子</li> <li>帽子</li> <li>裤子</li> <li>裙子</li> </ul> <span class="show">鞋子</span> <span>袜子</span> <span>帽子</span> <span>裤子</span> <span>裙子</span> </div> </body> </html>
另一种理解方式;
for(var i=0;i<liArr.length;i++){ //绑定索引值(自定义属性),通过Attribute的方式【重要】 liArr[i].setAttribute("index",i); liArr[i].onmouseover = function () { //3.书写事件驱动程序(排他思想) //1.点亮盒子。 2.利用索引值显示盒子。(排他思想) for(var j=0;j<liArr.length;j++){ liArr[j].removeAttribute("class"); spanArr[j].removeAttribute("class"); } this.setAttribute("class","current"); spanArr[this.getAttribute("index")].setAttribute("class","show"); } }
分类:
每日总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!