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 相关文章推荐
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
jQuery中scrollLeft()方法用法实例
Jan 16 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
js实现的动画导航菜单效果代码
Sep 10 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
Aug 13 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
Sep 04 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
Sep 18 Javascript
vue动态绑定class的几种常用方式小结
May 21 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
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
vue检测对象和数组的变化分析
2018/06/30 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
简单的python后台管理程序
2017/04/13 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
python实现银行实战系统
2020/02/26 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
研究生自荐信
2013/10/09 职场文书
人事专员岗位职责
2013/11/20 职场文书
自我鉴定写作要点
2014/01/17 职场文书
补充协议书范本
2014/04/23 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
交通处罚决定书
2015/06/24 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫