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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
jQuery插件开发全解析
Oct 10 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
js取整数、取余数的方法
May 11 Javascript
jQuery实现图片局部放大镜效果
Mar 17 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
Jul 07 Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 Javascript
教你使用vscode 搭建react-native开发环境
Jul 07 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实现图片添加水印功能
2014/02/13 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
jquery 常用操作方法
2010/01/28 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
Vue.use源码分析
2017/04/22 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
python中模块查找的原理与方法详解
2017/08/11 Python
Python类的继承和多态代码详解
2017/12/27 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
基于pandas中expand的作用详解
2019/12/17 Python
thinkphp5 路由分发原理
2021/03/18 PHP
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
如何清空Session
2015/02/23 面试题
秋季运动会加油稿200字
2014/01/11 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
2014年关工委工作总结
2014/11/17 职场文书
2014年营业员工作总结
2014/11/18 职场文书
付款承诺函范文
2015/01/21 职场文书
边城读书笔记
2015/06/29 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python