电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript實(shí)現(xiàn)Tab標(biāo)簽頁(yè)切換的最簡(jiǎn)便方式(4種)

瀏覽:57日期:2023-10-22 18:44:28

先說一下最土的一種方法:

Html:

<div class='tab-head'> <h2 onmouseover='changeTab1()' class='selected'>1</h2> <h2 onmouseover='changeTab2()'>2</h2> <h2 onmouseover='changeTab3()'>3</h2> </div> <div class='tab-content'> <div class='show'>content1</div> <div id='c2'>content2</div> <div id='c3'>content3</div> </div>

CSS:

h2 {border-top: solid cornflowerblue 1px;border-left: solid cornflowerblue 1px;width: 50px;height: 25px;margin: 0;float: left;text-align: center; } .tab-content {border: solid cornflowerblue 1px;width: 152px;height: 100px; } .tab-content div{display: none; } .selected {background-color: cornflowerblue; } .tab-content .show{display: block; }

JS:

var tab1 = document.getElementById(’tab1’),tab2 = document.getElementById(’tab2’),tab3 = document.getElementById(’tab3’),c1 = document.getElementById(’c1’),c2 = document.getElementById(’c2’),c3 = document.getElementById(’c3’); function changeTab1() {tab1.className = ’selected’;tab2.className = ’’;tab3.className = ’’;c1.className = ’show’c2.className = ’’;c3.className = ’’; } function changeTab2() {tab1.className = ’’;tab2.className = ’selected’;tab3.className = ’’;c1.className = ’’;c2.className = ’show’;c3.className = ’’; } function changeTab3() {tab1.className = ’’;tab2.className = ’’;tab3.className = ’selected’;c1.className = ’’c2.className = ’’;c3.className = ’show’; }

效果:

JavaScript實(shí)現(xiàn)Tab標(biāo)簽頁(yè)切換的最簡(jiǎn)便方式(4種)

實(shí)現(xiàn)Tab的切換,我們很容易想到的一種方式就是給每一個(gè)要控制的標(biāo)簽添加id,然后分別編寫鼠標(biāo)事件,使用id獲取每個(gè)元素,精確地控制每個(gè)元素的樣式。

這種方式的缺點(diǎn)顯而易見,有幾個(gè)元素就有幾個(gè)id,每個(gè)tab都要編寫function,里面的方法大同小異。要增加tab的話,還要增加id和function,代碼冗余,不易擴(kuò)展。

第二種較為高明些的方法是編寫一個(gè)function,將每個(gè)元素的序號(hào)傳進(jìn)去。

Html:

<div class='tab-head'> <h2 onmouseover='changeTab(0)' class='selected'>1</h2> <h2 onmouseover='changeTab(1)'>2</h2> <h2 onmouseover='changeTab(2)'>3</h2> </div> <div class='tab-content'> <div class='show'>content1</div> <div>content2</div> <div>content3</div> </div>

JS:

var tabs = document.getElementsByClassName(’tab-head’)[0].getElementsByTagName(’h2’),contents = document.getElementsByClassName(’tab-content’)[0].getElementsByTagName(’div’); function changeTab(index) {for(var i = 0, len = tabs.length; i < len; i++) { if(i === index) { tabs[i].className = ’selected’; contents[i].className = ’show’; }else{ tabs[i].className = ’’; contents[i].className = ’’; }} }

這樣就只要寫一個(gè)function了,而且不需要id,但是還是要按照順序傳遞參數(shù)。

第三種方式和第二種基本一樣,只是參數(shù)傳遞的是this指針。

Html:

<div class='tab-head'> <h2 onmouseover='changeTab(this)' class='selected'>1</h2> <h2 onmouseover='changeTab(this)'>2</h2> <h2 onmouseover='changeTab(this)'>3</h2> </div> <div class='tab-content'> <div class='show'>content1</div> <div>content2</div> <div>content3</div> </div>

JS:

var tabs = document.getElementsByClassName(’tab-head’)[0].getElementsByTagName(’h2’),contents = document.getElementsByClassName(’tab-content’)[0].getElementsByTagName(’div’); function changeTab(tab) {for(var i = 0, len = tabs.length; i < len; i++) { if(tabs[i] === tab) { tabs[i].className = ’selected’; contents[i].className = ’show’; } else { tabs[i].className = ’’; contents[i].className = ’’; }} }

這種方式稍微方便一些,只要傳遞this指針,不用按照順序傳遞序號(hào),但這也不是最簡(jiǎn)便的方式。

最簡(jiǎn)便的一種:

第四種方式:

Html:

<div class='tab-head'> <h2 class='selected'>1</h2> <h2>2</h2> <h2>3</h2> </div> <div class='tab-content'> <div class='show'>content1</div> <div>content2</div> <div>content3</div> </div>

JS:

var tabs = document.getElementsByClassName(’tab-head’)[0].getElementsByTagName(’h2’),contents = document.getElementsByClassName(’tab-content’)[0].getElementsByTagName(’div’); (function changeTab(tab) {for(var i = 0, len = tabs.length; i < len; i++) { tabs[i].onmouseover = showTab;} })(); function showTab() {for(var i = 0, len = tabs.length; i < len; i++) { if(tabs[i] === this) { tabs[i].className = ’selected’; contents[i].className = ’show’; } else { tabs[i].className = ’’; contents[i].className = ’’; }} }

這樣JS、Html、CSS就完全分離了,通過this指針就可以判斷當(dāng)前鼠標(biāo)滑過的是哪一個(gè)tab了。

到此這篇關(guān)于JavaScript實(shí)現(xiàn)Tab標(biāo)簽頁(yè)切換的最簡(jiǎn)便方式(4種)的文章就介紹到這了,更多相關(guān)JavaScript Tab標(biāo)簽頁(yè)切換內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 数控走心机-走心机价格-双主轴走心机-宝宇百科 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 工作服定制,工作服定做,工作服厂家-卡珀职业服装(苏州)有限公司 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 长城人品牌官网 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 阜阳在线-阜阳综合门户| Duoguan 夺冠集团| 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | bng防爆挠性连接管-定做金属防爆挠性管-依客思防爆科技 | 江西自考网-江西自学考试网| 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费| 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保| 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 |