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模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...
随机推荐
- PHP创建定义数组
$array = array(); $array["key"] = "values"; ?> 在PHP中声明数组的方式主要有两种:1.用arr ...
- 在IT公司,project manager 基本上和秘书,助理什么的差不多
我感觉非常有道理,所以我不做Leader,哈哈哈
- dump文件定位程序崩溃代码行
1.dump文件 2.程序对应的pdb 步骤一:安装windbg 步骤二:通过windbg打开crash dump文件 步骤三:设置pdb文件路径,即符号表路径 步骤四:运行命令!analyze -v ...
- readv和writev函数
readv 和 writev 函数用于在一次函数调用中读.写多个非连续缓冲区.有时也将这两个函数称为散布读和聚集写. #include <sys/uio.h> ssize_t readv( ...
- hdu4300之KMP&&EKMP
Clairewd’s message Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- linux命令 收集
https://jaywcjlove.github.io/linux-command/ 源码:https://github.com/jaywcjlove/linux-command Linux思维导图 ...
- jz2440: linux/arch/arm/下面的plat-和mach-
jz2440: linux/arch/arm/下面的plat和mach plat-s3c24xxmach-s3c2440mach-s3c2410 ====================== 1. 三 ...
- hdu 4782 Beautiful Soupz
模拟.其实这题就是题目比较长而已...读完题目就差不多了.tag直接读就可以了,题目说了不用修改.然后整个题目就是让求text部分,严格按空格分开.注意每行前面空格个数. #include<al ...
- C#线程应用实例(part1) 之 BeginInvoke和EndInvoke
最近这个公司是做 winfrom 开发的 , 这段时间就好好的学学WCF , 公司框架什么的自己去琢磨! 这里主要写一些 winfrom 中 用到的一些陌生 技术 1.BeginInvoke 以前B ...
- sqm(sqlmapGUI) pcat修改版
sqlmap是一款开源的注入工具,支持几乎所有的数据库,支持get/post/cookie注入,支持错误回显注入/盲注,还有其他多种注入方法. 支持代理,指纹识别技术判断数据库 .而sqm(sqlma ...