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实现图片的前进与后退功能
Apr 24 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
VUE 自定义组件模板的方法详解
Aug 30 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 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 Encode编写开发PHP程序
2010/02/21 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python深度优先算法生成迷宫
2018/01/22 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
土木工程应届生自荐信
2013/09/24 职场文书
致共产党员倡议书
2014/04/16 职场文书
最新离婚协议书范本
2014/08/19 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
教学督导岗位职责
2015/04/10 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA