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模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...
随机推荐
- MVC中关于JSON的处理
jquery中提交数据 $.getJSON("/TopicUpdate/UpdateInformation", { "bookId": bookid } ...
- UVA 10325 lottery 容斥原理
题目链接 给出m个数, 求1-n的范围内, 无法整除这m个数之中任何一个数的数的个数. 设m个数为a[i], 对任意的i, n/a[i]是n中可以整除a[i]的数的个数, 但是这样对于有些数重复计算了 ...
- Output in PowerShell
Reference article: https://rkeithhill.wordpress.com/2007/09/16/effective-powershell-item-7-understan ...
- 射频识别技术漫谈(7)——ID卡
ID(Identification)是识别的意思,ID卡就是识别卡.ID卡包含范围广泛,只要具有识别功能的卡片都可以叫ID卡,例如条码卡,磁卡都可以是ID卡,我们这儿说的当然是射频识别卡. 射频ID卡 ...
- COB工艺流程及基本要求
工艺流程及基本要求 清洁PCB---滴粘接胶---芯片粘贴---测试---封黑胶加热固化---测试---入库 1.清洁PCB 清洗后的PCB板仍有油污或氧化层等不洁部分用皮擦试帮定位或测试针位对擦拭的 ...
- 转:命令和查询责任分离(CQRS)架构模式
读了“蓝皮书”距今差不多一年,它改变了我的软件开发和构建软件架构观.在我作为一名程序员期间,我尝试了许多不同的方式来构建软件.方法有很多,包括一个贫血的域模型(Anemic Domain Model) ...
- elaserch 查看节点是否是master
http://192.168.32.81:9200/_cat/nodes 192.168.32.81 192.168.32.81 3 21 0.00 d * node02 192.168.32.80 ...
- Ext JS学习第三天 我们所熟悉的javascript(二)
•javascript之函数 •对于Ext开发者,我还是希望你能对javascript原生的东西非常了解.甚至熟练掌握运用.那么函数,无疑是非常重要的概念.首先在前面一讲,我们知道了函数也是一种数据类 ...
- Xcode Could not load NIB 的一个问题解决
# Could not load NIB 的一个问题 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pr ...
- C-C Radar Installation 解题报告
C-C Radar Installation 解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86640#pr ...