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模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...
随机推荐
- [LeetCode]题解(python):097-Interleaving String
题目来源: https://leetcode.com/problems/interleaving-string/ 题意分析: 给定字符串s1,s2,s3,判断s3是否由s1和s2穿插组成.如“abc” ...
- JS声明语句提升与作用域
<!DOCTYPE html><html><head></head><body><script>//-------------- ...
- QQwry
http://blog.runphp.net/archives/156 http://wenku.baidu.com/link?url=yvd3_EpMM66r6H4qkx3oqcaU2JZNAQv_ ...
- 一劳永逸让windows 64位操作系统 禁止强制驱动签名
如何让WINDOWS7 64位直接加载“禁用强制驱动程序签名”方式启动 Windows Client 论坛 > Windows 7 问题 0 登录进行投票 因为开发需要,要装一台设备的驱动,但 ...
- kinect for windows - SkeletonBasics-D2D详解之二
首先看骨骼追踪例子代码的结构:
- Shared_from_this 几个值得注意的地方
shared_from_this()是enable_shared_from_this<T>的成员 函数,返回shared_ptr<T>.首先需要注意的是,这个函数仅在share ...
- JAVA GUI学习 - JSplitPane分屏组件学习
public class JSplitPaneKnow extends JFrame { JSplitPane jSplitPane; JPanel jPanelRed; JPanel jPanelB ...
- [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化
引言: 我们在进行手机游戏开发的过程中,由于手机的内存资源是有限的,那么对纹理贴图的优化是非常有必要的,有可能相同的功能,优化的好与不好对内存资源的消耗是非常明显的,下面我就用一个例子来说明一下. 说 ...
- android编译系统的makefile文件Android.mk写法如下
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:LOCAL_PATH:=$(c ...
- filter angularjs 过滤器
定义:从一个数组中根据某种规则返回新的数组. 语法: 在html中 {{ filter_expression | filter : expression : comparator}} 在javascr ...