this 大作战:用面向对象写现象卡效果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1 input{
                background: white;
            }
            .active{
                background: yellow !important;
            }
            #div1 div{
                width: 200px;
                height: 200px;
                background: #ccc;
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <input type="button" class="active" value="a"/>
            <input type="button" name="" id="" value="b" />
            <input type="button" name="" id="" value="c" />
            <div style="display: block;">aaa</div>
            <div>bbb</div>
            <div>ccc</div>
        </div>

    </body>
    <script type="text/javascript">

        /*
         * 面向过程的选型卡写法
         */
/*      var oDiv=document.getElementById('div1');
        var aBtn=oDiv.getElementsByTagName('input');
        var aDiv=oDiv.getElementsByTagName('div');
        for (var i=0;i<aBtn.length;i++) {
            aBtn[i].index=i;
            aBtn[i].onclick=function(){
                for (var k=0;k<aBtn.length;k++) {
                    aBtn[k].className='';
                    aDiv[k].style.display='none';

                }
                this.className='active';
                aDiv[this.index].style.display='block';
            }
        }*/


        /*
         *面向对象方法选项卡
         */

        //使用
        new Tab('div1');

        //构建函数:+属性;
        function Tab(id){
            //var this=new Object();
            var oDiv=document.getElementById(id);
            this.aBtn=oDiv.getElementsByTagName('input');
            this.aDiv=oDiv.getElementsByTagName('div');
            var _this=this;//this为object
            for (var i=0;i<this.aBtn.length;i++) {
                this.aBtn[i].index=i;
                this.aBtn[i].onclick=function(){
                    _this.click(this);
                };
            }
        }

        //原型:+方法
        Tab.prototype.click=function(obj){
            for (var k=0;k<this.aBtn.length;k++) {
                this.aBtn[k].className='';
                this.aDiv[k].style.display='none';
            }
            obj.className='active';
            this.aDiv[obj.index].style.display='block';
        }
    </script>
</html>

这里写图片描述

中心思想:
1、利用面向过程写选项卡改写为面向对象写法;
2、构建函数写属性;原型写方法;调用;
3、关键是各this代表的意义;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值