zoukankan      html  css  js  c++  java
  • [Js]面向对象的选项卡实例

    中间过渡环节:把面向过程的程序,改写成面向对象的形式

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <style>
    #div1 input {background:#CCC;}
    #div1 .active {background:yellow;}
    #div1 div {200px; height:200px; background:#CCC; display:none;}
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    window.onload=function ()
    {
        var oDiv=document.getElementById('div1');
        var aBtn=oDiv.getElementsByTagName('input');
        var aDiv=oDiv.getElementsByTagName('div');
        var i=0;
        
        for(i=0;i<aBtn.length;i++)
        {
            aBtn[i].index=i;
            aBtn[i].onclick=function ()
            {
                for(i=0;i<aBtn.length;i++)
                {
                    aBtn[i].className='';
                    aDiv[i].style.display='none';
                }
                this.className='active';
                aDiv[this.index].style.display='block';
            };
        }
    };
    </script>
    </head>

    <body>
    <div id="div1">
        <input class="active" type="button" value="教育" />
        <input type="button" value="财经" />
        <input type="button" value="aaa" />
        <div style="display:block;">1asdfasdfds</div>
        <div>2xzcvxzcv</div>
        <div>5332342345</div>
    </div>
    </body>
    </html>

    改写注意事项:

    1.前提:所有代码必须包含在window.onload里面

    2.去掉函数嵌套(window.onload里面嵌套的函数拎到window.onload外面去)

    3.不能有函数嵌套,但可以有全局变量(比如onclick函数拎出去后,aBtn是window.onload函数里的私有变量,onclick函数不能用)

    过程:

    1.onload(初始化整个程序)→构造函数(初始化一个对象)

    2.全局变量→属性

    3.函数→方法

    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 i=0;
        var _this=this;          //this是new出来的对象,即oTab
        for(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(i=0;i<this.aBtn.length;i++)
        {
            this.aBtn[i].className='';
            this.aDiv[i].style.display='none';
        }
        oBtn.className='active';    //要被点击的按钮改变,而不是new出来的对象,所以这里不用this
        this.aDiv[oBtn.index].style.display='block';
    }

  • 相关阅读:
    iframe脸面的页面和父页面之间的交互方法
    iframe高度自适应
    获取html元素所在页面的坐标
    自制的几个jquery插件
    将DataTable转换成Json格式
    QL 获取当前日期,年、月、日、周、时、分、秒
    DropdownList异步刷新GridView数据
    图片热区——map的用法
    Chart控件文档
    母版页改变被嵌套的页面中的控件ID的解决方法
  • 原文地址:https://www.cnblogs.com/zhangwenkan/p/3739344.html
Copyright © 2011-2022 走看看