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学习基础笔记之DOM对象操作
Nov 03 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
JavaScript中String.match()方法的使用详解
Jun 06 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
微信小程序自动客服功能
Nov 02 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 Javascript
JS计算斐波拉切代码实例
Sep 12 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
php中JSON的使用与转换
2015/01/14 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
Python三元运算实现方法
2015/01/12 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
管理部部长岗位职责
2013/12/05 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
对标管理实施方案
2014/03/12 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
民事起诉书范本
2015/05/19 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python