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 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
div模拟选择框示例代码
Nov 03 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
浅谈angularJS中的事件
Jul 12 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
webpack热模块替换(HMR)/热更新的方法
Apr 05 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
求PHP数组最大值,最小值的代码
2011/10/31 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php封装的验证码类分享
2017/02/26 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue小白入门教程
2018/04/02 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
Python常见数据结构详解
2014/07/24 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
python绘制多个子图的实例
2019/07/07 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
如何用Python徒手写线性回归
2021/01/25 Python
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
寄语是什么意思
2014/04/10 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书