javascript面向对象——tabs实例
面向过程—>面向对象
之前在未学习面向对象时,我们都是面向过程编程的。它的优点就是简单,明了,下面就来把面向过程的tabs切换改写成面向对象的方式。
html:
<div class="tabs" id="tabs1">
<ul class="tabs-nav">
<li class="active"><a href="javascript:;">折扣</a></li>
<li><a href="javascript:;">活动</a></li>
<li><a href="javascript:;">优惠</a></li>
<li><a href="javascript:;">其他</a></li>
</ul>
<div class="tabs-cnt">
<div class="tabs-content">
11111111
</div>
<div class="tabs-content">
2222
</div>
<div class="tabs-content">
3333
</div>
<div class="tabs-content">
4444
</div>
</div>
</div>
css:
;; list-style:none;}
.tabs{ margin:10px;}
.tabs-nav:before, .tabs-nav:after{ display:table; content:' ';}
.tabs-nav:after{ width:100%; clear:both; border-bottom:1px solid #47a3da;}
.tabs-nav li{ position:relative; float:left; margin-right:5px; border:1px solid #becbd2; border-bottom:none;}
.tabs-nav li.active:after{ position:absolute; bottom:-1px; width:100%; display:block; content:' '; border-bottom:1px solid #fff;}
.tabs-nav a{ display:block; padding:0 20px; line-height:30px; text-decoration:none; color:#000; font-size:14px;}
.tabs-cnt{ padding:10px;}
.tabs-content{ display:none;}
.tabs-content:first-child{ display:block;}
javascript:
window.onload=function(){
var oTabs=document.getElementById('tabs1');
var aTabsNav=oTabs.querySelectorAll('.tabs-nav li');
var aTabsCnt=oTabs.querySelectorAll('.tabs-content');
for(var i=0;i<aTabsNav.length;i++){
aTabsNav[i].index=i;
aTabsNav[i].onclick=function(){
for(var i=0;i<aTabsNav.length;i++){
aTabsNav[i].className='';
aTabsCnt[i].style.display='none';
}
this.className='active';
aTabsCnt[this.index].style.display='block';
};
}
};
效果:

改写成面向对象:
需要注意的几点:1.不能有函数嵌套 2.变量改为属性 3.函数改为方法 4.this的指向问题
function tabSwitch(id){
var _this=this;
this.oTabs=document.getElementById(id);
this.aTabsNav=this.oTabs.querySelectorAll('.tabs-nav li');
this.aTabsCnt=this.oTabs.querySelectorAll('.tabs-content');
for(var i=0;i<this.aTabsNav.length;i++){
this.aTabsNav[i].index=i;
this.aTabsNav[i].onclick=function(){
_this.tab(this);
};
}
}
tabSwitch.prototype.tab=function(oTabsNav){
for(var i=0;i<this.aTabsNav.length;i++){
this.aTabsNav[i].className='';
this.aTabsCnt[i].style.display='none';
}
oTabsNav.className='active';
this.aTabsCnt[oTabsNav.index].style.display='block';
};
new tabSwitch('tabs1');
javascript面向对象——tabs实例的更多相关文章
- javaScript 面向对象开发实例
javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...
- JavaScript面向对象 实例与原型
JavaScript 面向对象 和 C# 不太一样,js 的对象是继承自原型的如下: 首先创建一个 js 实例 new function function f () {} 这个函数 会继承 Func ...
- JavaScript学习总结(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
- javascript面向对象系列第四篇——选项卡的实现
前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡. ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- javascript面向对象系列第一篇——构造函数和原型对象
× 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...
- Javascript面向对象(封装、继承)
Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...
- 【转】javascript面向对象编程
摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...
- javascript面向对象(一):封装
本文来自阮一峰 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...
随机推荐
- HDU1712-ACboy needs your help
描述: ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profi ...
- Android 使用 intent 实现简单登陆页面
前言 第一个 Android 程序,应该有些纪念的意义吧~ 主页面布局 给 Button 添加响应函数:android:onClick="login" public void lo ...
- [转]IOS 学习笔记(8) 滚动视图(UIScrollView)的使用方法
下面介绍pageControl结合ScrollView实现连续滑动翻页的效果,ScrollView我们在应用开发中经常用到,以g这种翻页效果还是很好看的,如下图所示: 通过这个例子,我们重点学习UIS ...
- C#调用Matlab生成的dll方法
其实整个过程比较简单,但是需要心细一点. 需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLAB Compiler Runtime,这个文件(MC ...
- SIM卡厂商的识别方法
ICCID(SIM卡号码)的定义应该是: 1-6位:国际移动运营商识别码(IMSI),898600为中国移动,898601为中国联通 7-20位:移动和联通的定义是不同的. 中国移动: 第7.8 ...
- Json.Net系列教程 4.Linq To JSON
原文 Json.Net系列教程 4.Linq To JSON 更改历史 2013-05-31 添加一个FAQ 一.Linq to JSON是用来干什么的? Linq to JSON是用来操作JSO ...
- github 的分支操作
首先需要当前目录设置为仓库目录 一.创建本地分支 1.查看有哪些分支:git branch 2.创建一个分支:git branch name ,其中name是分支名 3.切换到分支:git chec ...
- TEX Quotes(字符串,水)
TEX Quotes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9674 Accepted: 5073 Descri ...
- java 解析国密SM2算法证书
首先说明用Java自带的解析x509证书类,是不能解析sm2算法的证书,执行会抛出异常. 用开源库bouncycastle能够解析.详细代码 private byte[] getCSPK(byte[] ...
- x0vncserver Fatal server error: no screens found
I make a connection through SSH and then I type: # x0vncserver --PasswordFile=/home/hello/.vnc/pass ...