JS基于面向对象实现的选项卡效果示例


Posted in Javascript onDecember 20, 2016

本文实例讲述了JS基于面向对象实现的选项卡效果。分享给大家供大家参考,具体如下:

中间过渡环节:把面向过程的程序,改写成面向对象的形式

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#div1 input {background:#CCC;}
#div1 .active {background:yellow;}
#div1 div {width:200px; height:200px; background:#CCC; display:none;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function ()
{
  var oDiv=document.getElementById('div1');
  var aBtn=oDiv.getElementsByTagName('input');
  var aDiv=oDiv.getElementsByTagName('div');
  var i=0;
  for(i=0;i<aBtn.length;i++)
  {
    aBtn[i].index=i;
    aBtn[i].onclick=function ()
    {
      for(i=0;i<aBtn.length;i++)
      {
        aBtn[i].className='';
        aDiv[i].style.display='none';
      }
      this.className='active';
      aDiv[this.index].style.display='block';
    };
  }
};
</script>
</head>
<body>
<div id="div1">
  <input class="active" type="button" value="教育" />
  <input type="button" value="财经" />
  <input type="button" value="aaa" />
  <div style="display:block;">1asdfasdfds</div>
  <div>2xzcvxzcv</div>
  <div>5332342345</div>
</div>
</body>
</html>

改写注意事项:

1.前提:所有代码必须包含在window.onload里面
2.去掉函数嵌套(window.onload里面嵌套的函数拎到window.onload外面去)
3.不能有函数嵌套,但可以有全局变量(比如onclick函数拎出去后,aBtn是window.onload函数里的私有变量,onclick函数不能用)

过程:

1.onload(初始化整个程序)→构造函数(初始化一个对象)
2.全局变量→属性
3.函数→方法

window.onload=function(){
  var oTab=new TabSwitch("div1");
}
function TabSwitch(id)
{
  var oDiv=document.getElementById(id);
  this.aBtn=oDiv.getElementsByTagName('input');
  this.aDiv=oDiv.getElementsByTagName('div');
  var i=0;
  var _this=this;     //this是new出来的对象,即oTab
  for(i=0;i<this.aBtn.length;i++)
  {
    this.aBtn[i].index=i;
    this.aBtn[i].onclick=function(){
      _this.tab(this);  //通过参数的形式,将被点击的按钮传到下面去
    };
  }
};
TabSwitch.prototype.tab=function(oBtn){
  for(i=0;i<this.aBtn.length;i++)
  {
    this.aBtn[i].className='';
    this.aDiv[i].style.display='none';
  }
  oBtn.className='active';  //要被点击的按钮改变,而不是new出来的对象,所以这里不用this
  this.aDiv[oBtn.index].style.display='block';
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
面向对象的javascript(笔记)
Oct 06 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
js实现图片在未加载完成前显示加载中字样
Sep 03 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
jQuery继承extend用法详解
Oct 10 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
Jan 20 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
Jul 28 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
原生Js 实现的简单无缝滚动轮播图的示例代码
May 10 Javascript
解决Angular.Js与Django标签冲突的方案
Dec 20 #Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 #Javascript
JS基于面向对象实现的拖拽功能示例
Dec 20 #Javascript
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 #Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
Dec 20 #Javascript
JS简单实现表格排序功能示例
Dec 20 #Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 #Javascript
You might like
global.php
2006/12/09 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
初品cakephp 入门基础
2012/02/16 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
浅析Jquery操作select
2016/12/13 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
2014年学习部工作总结
2014/11/12 职场文书
新郎答谢词
2015/01/04 职场文书
民间借贷借条范本
2015/05/25 职场文书
小学教育见习总结
2015/06/23 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL