纯JS制作选项卡--JavaScript实例集锦(初学)

本文通过具体实例展示了如何使用JavaScript实现页面中的Tab切换效果,并对比了面向过程与面向对象两种编程方式的不同实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近重新从最基础学习JavaScript,如同盖房,先要打好基础,一砖一瓦都很重要。

下面我来嘚吧几句,附上从书上学到的实例与效果。

JS可以用面向过程去写,也可以使用面向对象。面向对象会使一段JS代码更好进行复用,封装与继承。
已下我会写出2种实现tab切换的方法--面向过程与面向对象

面向过程如同你写一篇文章,从头写到尾,不用介绍人物,场景,按照顺序一路写下去即可。

1.tab切换效果图


代码实现:

<!DOCTYPE html>
<html>
<head>
    <title>选项卡</title>
    <style type="text/css">
        input{background: white;}
        .active{background: yellow;}
        div{width: 200px;height: 200px;background: #ccc;display: none;}
    </style>
    <script type="text/javascript">
        window.onload=function(){
            var aBtn=document.getElementsByTagName('input');//getElementByTagName 获取所有的input
            var aDiv=document.getElementsByTagName('div');//getElementByTagName 获取所有的div
for(var i=0;i<aBtn.length;i++){ 
aBtn[i].index
=i; //记录按钮的索引值,点击了第几个按钮
aBtn[i].onclick
=function(){
for (var i = 0;i<aBtn.length;i++) {
aBtn[i].className
=""; //for循环设置其他按钮的Class为空
aDiv[i].style.display
="none";//for循环设置其他div隐藏
}
// alert('点击了第'+this.index+'个按钮');
this.className="active";//设置当前按钮的Class为active
aDiv[
this.index].style.display="block";//设置当前div显示
};
}
}

</script>
</head>
<body>
<input class="active" type="button" value="1"/>
<input type="button" value="2"/>
<input type="button" value="3"/>
<div style="display: block">111</div>
<div>222</div>
<div>333</div>
</body>
</html>

2.面向对象的tab切换



效果图一样,但代码实现会有差别
代码实现:

<!DOCTYPE html>
<html>
<head>
    <title>选项卡</title>
    <style type="text/css">
        input{background: white;}
        .active{background: yellow;}
        #div1 div{width: 200px;height: 200px;background: #ccc;display: none;}
        #div1{display: block;}
    </style>
    <script type="text/javascript">
        // var aBtn=null;
        // var aDiv=null;
window.onload=function(){
    var oTab=new TabSwitch('div1');//实例化一个对象
}
    function TabSwitch(id){
             var oDiv=document.getElementById(id);
             this.aBtn=oDiv.getElementsByTagName('input');
            this.aDiv=oDiv.getElementsByTagName('div');
            var _this=this;//用_this存取对象,对象具有标签切换的功能
            for(var i=0;i<this.aBtn.length;i++){
                this.aBtn[i].index=i;
                this.aBtn[i].onclick=function()
                {
                    _this.tab(this);
                };
                
            }
        };
        TabSwitch.prototype.tab=function(oBtn){
                    for (var i = 0;i<this.aBtn.length;i++) {
                        this.aBtn[i].className="";
                        this.aDiv[i].style.display="none";

                    }
                    // alert('点击了第'+this.index+'个按钮');
                oBtn.className="active";    
                this.aDiv[oBtn.index].style.display="block";
                };
    </script>
</head>
<body>
<div id="div1"> 
<input class="active" type="button" value="1"/>
<input type="button" value="2"/>
<input type="button" value="3"/>
<div style="display: block">111</div>
<div>222</div>
<div>333</div>
</div> 
</body>
</html>

面向对象的好处是:如果想多次使用该JS方法,只需要实例化多个对象即可。
var oTab=new TabSwitch('div1');//实例化一个对象

var oTab=new TabSwitch('div2');//实例化一个对象

 

转载于:https://www.cnblogs.com/cheryshi/p/8405940.html

内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值