美文网首页
面向过程与面向对象比较之tab选项卡切换

面向过程与面向对象比较之tab选项卡切换

作者: JacobMa1996 | 来源:发表于2017-01-25 00:14 被阅读0次
<body>
    <div id="div">
        <input type="button" value="选项卡1" name="">
        <input type="button" value="选项卡2" name="">
        <input type="button" value="选项卡3" name="">
        <div>111</div>
        <div>222</div>
        <div>333</div>
    </div>
</body>
<script type="text/javascript">
    //面向过程的选项卡切换(用循环而不用每个元素设置id)
    window.onload = function(){
        var div = document.getElementById("div");
        var btn = div.getElementsByTagName("input");
        // alert(btn.length);
        var content = div.getElementsByTagName("div");
        for(var i = 0,Len = btn.length;i < Len;i++){
            // alert(btn[i]);
            //将每次加载DOM元素的onlcik事件时,把赋给btn的index属性
            btn[i].index = i;
            // console.log(i);
            btn[i].onclick = function(){
                for(var j = 0,Len2 = content.length;j < Len2;j++){
                    content[j].style.display = "none";
                }
                content[this.index].style = "blcok";
                //此时,i=3,因为已加载完三个onclick事件,所以当点击事件时,i=3;
                // console.log(i);
            };
        }
    };
    //面向对象写法:组合使用构造函数模式和原型模式
    function tabSwitch(id){
        this.div = document.getElementById(id),
        this.btn = div.getElementsByTagName("input"),
        this.content = div.getElementsByTagName("div");
        tabSwitch.prototype.tab = function(){
            for(var i = 0,Len = this.btn.length;i < Len;i++){
                this.btn[i].index = i;
                //在事件中,this指向执行此事件的对象,因此将原来指向新对象的this赋给_this
                _this = this;
                this.btn[i].onclick = function(){
                    for(var j = 0,Len2 = _this.content.length;j < Len2;j++){
                        _this.content[j].style.display = "none";
                        // console.log(_this);
                    }
                    _this.content[this.index].style = "block";
                }
            }
        }
        console.log(tabSwitch.prototype);//指向原型
        console.log(tabSwitch.prototype.constructor);//指向构造函数
    }
    window.onload = function(){
        var tab = new tabSwitch("div");
        tab.tab();
        console.log(tab.__proto__);//指向原型
    }
</script>

面向过程写法简单,但用起来不方便,面向对象写法效率高,用起来方便

相关文章

  • 面向过程与面向对象比较之tab选项卡切换

    面向过程写法简单,但用起来不方便,面向对象写法效率高,用起来方便

  • 17 - Tab选项卡-面向对象

    用面向对象实现Tab选项卡 面向对象是一种思想,从面向过程到面向对象的转变需要一个过程 HTML结构 Css样式 ...

  • 面向对象三

    面向对象中级 面向对象实例:选项卡 改写面向过程的选项卡image.png 改写面向对象程序的四要素 this 什...

  • 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?

    什么是面向过程编程与面向过程编程语言?面向对象编程相比面向过程编程有哪些优势?为什么说面向对象编程语言比面向过程编...

  • Java 面试基础知识(一)

    1.面向对象与面向过程的区别 面向过程:性能比面向对象高,但是维护性、扩展性和复用性没有面向对象好。 面向对象:维...

  • Java 面试基础知识(一)

    1.面向对象与面向过程的区别 面向过程:性能比面向对象高,但是维护性、扩展性和复用性没有面向对象好。 面向对象:维...

  • JAVA面试宝典

    面向过程与面向对象的区别: 面向过程性能比面向对象性能高,但是不容易维护,不容易调用,也不容易扩展 面向对象性能比...

  • JavaSE基础

    面向过程与面向对象的区别: 面向过程性能比面向对象性能高,但是不容易维护,不容易调用,也不容易扩展 面向对象性能比...

  • Java程序员必修内功心法!(内功修炼第二层)

    1,Java 面向对象 1.1类和对象 1.1.1. 面向对象和面向过程的区别 1,面向过程 :面向过程性能比面向...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

网友评论

      本文标题:面向过程与面向对象比较之tab选项卡切换

      本文链接:https://www.haomeiwen.com/subject/ngrtittx.html