js面向对象实现切换面板

js面向对象的特点:

继承(inheritance):对象方法和属性的继承

多态(polymorphism):组件开发

抽象(abstract):抓住核心问题

封装(encapsulation):把功能写出方法

面向过程式切换面板实现:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>切换面板</title>
        <style>
            #div1 input {
                background: white;
            }

            #div1 input.active {
                background: yellow;
            }

            #div1 div {
                width: 200px;
                height: 200px;
                background: #CCC;
                display: none;
            }
        </style>
        <script>
            window.onload = function() {
                var div = document.getElementById(‘div1‘);
                var ipt = oDiv.getElementsByTagName(‘input‘);
                var divContents = oDiv.getElementsByTagName(‘div‘);
                for(var i = 0; i < aBtn.length; i++) {
                    ipt[i].index = i;
                    ipt[i].onclick = function() {
                        //隐藏所有,显示所点击面板
                        for(var i = 0; i < ipt.length; i++) {
                            ipt[i].className = ‘‘
                            ipt[i].style.display = ‘none‘;
                        }
                        this.className = ‘active‘;
                        ipt[this.index].style.display = ‘block‘;
                    };
                }
            };
        </script>

    </head>

    <body>
        <div id="div1">
            <input class="active" type="button" value="aaa" />
            <input type="button" value="bbb" />
            <input type="button" value="ccc" />
            <div style="display:block;">saysomething</div>
            <div>sayHello</div>
            <div>sayGoodbye</div>
        </div>
    </body>
</html>

面向对象方法:

            window.onload = function() {
                new TabSwitch(‘div1‘);
            };

            function TabSwitch(id) {
                //将属性挂到this
                var _this = this;//注意this的改变
                var div = document.getElementById(id);
                this.ipt = div.getElementsByTagName(‘input‘);
                this.divContents = div.getElementsByTagName(‘div‘);

                for(var i = 0; i < this.ipt.length; i++) {
                    this.ipt[i].index = i;
                    this.ipt[i].onclick = function() {
                        _this.fnClick(this);
                    };
                }
            };
            //函数不嵌套,方法写入原型
            TabSwitch.prototype.fnClick = function(ref) {
                for(var i = 0; i < this.ipt.length; i++) {
                    this.ipt[i].className = ‘‘
                    this.divContents[i].style.display = ‘none‘;
                }
                ref.className = ‘active‘;
                this.divContents[ref.index].style.display = ‘block‘;
            }
时间: 2024-10-12 21:24:34

js面向对象实现切换面板的相关文章

JS面向对象笔记二

菜单导航,<JS面向对象笔记一>,  参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函数和new命令 五.构造函数和new命令 六.构造函数和new命令 七.构造函数和new命令 八.构造函数和new命令 一.构造函数和new命令 1.构造函数 JavaScript语言的对象体系,不是基于"类"的,而是基于构造函数(constructor)和原型链(prototype) 为

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

原生JS编写图片切换效果和点击按钮的样式变化

这两天更进一步的了解了JS,老师让我们用原生的js编写图片切换和改变点击按钮样式,就是让我们学会怎么去把一个问题拆分,怎么将一个大问题拆分成许多的小问题,再用函数封装起来.比如一个点击按钮,让其点击时背景色发生改变,点击另一个时,上一个按钮要变回原来本有的颜色:这个问题用jquery,一行代码就搞定,但是用原生js就得分三个部分来考虑: 1.添加改变背景的样式. 2.怎么获取到除了当前点击的按钮以外其他的兄弟节点. 3.怎么去除按钮的样式属性. 也讲了事件委托,实现了可以删除新添加的元素的功能.

JS图片Switchable切换大集合

JS图片切换大集合 利用周末2天把JS图片切换常见效果封装了下,比如:轮播,显示隐藏,淡入淡出等.废话不多说,直接看效果吧!JSFiddler链接如下: 想看JS轮播切换效果请点击我! 当然由于上传图片时候 png图片自动转换成jpg 所以左右按钮有透明,但是也没有关系,我们最主要的是看看效果是什么样的,至于图片大家可以替换.下面看看默认配置项吧!   container '',     外层容器 必填项 默认为空  contentCls  '.list',     内容所在的容器 默认为'.l

js面向对象的系列

在面向对象语言中如java,C#如何定义一个对象,通常是定义一个类,然后在类中定义属性,然后通过new 关键字来实例化这个类,我们知道面向对象有三个特点,继承.多态和封装.那么问题来了,在javaScript中如何定义一个类?在javaScript中如何定义类的属性?如何继承?带着这些问题开始我们的js面向对象之旅吧. 在js中如何定义类? js中是没有类的概念的,但是我们通常会用一个函数定义成一个类.funtion class1(){ //类的成员定义 } 这里class1既是一个函数也是一个

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧,想点与代码无关的事,比如人.妖以及人妖. 1)人是人他妈生的,妖是妖他妈生的.人和妖都是对象实例,而人他妈和妖他妈就是原型.原型也是对象,叫原型对象. 2)人他妈和人他爸啪啪啪能生出一堆人宝宝.妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗

js面向对象程序设置——创建对象

<script type="text/javascript">            //工厂方式        //1.原始方式        /* var objCar=new Object();        objCar.name="劳斯莱斯";        objCar.color="blue";        objCar.showColor = function() {          alert(this.colo

js面向对象编程:如何实现方法重载

js中如何实现方法重载?这涉及到三个问题 1同名函数的调用问题 2函数中特殊的参数arguments 3如何利用arguments实现方法重载 1同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序 例如: function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1

js面向对象编程:如何定义常量?

js中有一个关键字const,但目前的浏览器似乎还不支持,如果一定要定义一些常量,其实可以使用闭包,匿名函数实现常量的定义. 例如: var Class = (function() { var UPPER_BOUND = 100;//定义了常量 var Test={}; // 定义了一个静态方法 获取常量的方法 Test.getUPPER_BOUND=function() { return UPPER_BOUND; } return Test; })(); 用法: var k=Class.get