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 相关文章推荐
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
JS实现JSON.stringify的实例代码讲解
Feb 07 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
vue项目初始化到登录login页面的示例
Oct 31 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 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
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
Python通过poll实现异步IO的方法
2015/06/04 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python之用户输入的实例
2018/06/22 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
大学生的网上创业计划书
2013/12/31 职场文书
教学评估实施方案
2014/03/16 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
学校开除通知书
2015/04/25 职场文书
警示教育片观后感
2015/06/17 职场文书
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA