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 相关文章推荐
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
jquery实现移动端点击图片查看大图特效
Sep 11 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
webpack进阶——缓存与独立打包的用法
Aug 02 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
如何正确理解vue中的key详解
Nov 02 Javascript
基于js判断浏览器是否支持webGL
Apr 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高级OOP技术演示
2009/08/27 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
职工趣味运动会方案
2014/02/10 职场文书
大学四年个人自我小结
2014/03/05 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
玄武湖导游词
2015/02/05 职场文书
2015年助残日活动总结
2015/03/27 职场文书
起诉状范本
2015/05/20 职场文书
民事上诉状范文
2015/05/22 职场文书
无保留意见审计报告
2015/06/05 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Python基础详解之邮件处理
2021/04/28 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python