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判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
js实现正则匹配中文标点符号的方法
Dec 23 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
详解Webpack loader 之 file-loader
Nov 07 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
解决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
改变Apache端口等配置修改方法
2008/06/05 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python正则表达式完全指南
2017/05/25 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python实现XML解析的方法解析
2019/11/16 Python
python连接mongodb集群方法详解
2020/02/13 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
越南综合购物网站:Lazada越南
2019/06/10 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
市场营销管理制度
2014/01/29 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
植树节新闻稿
2015/07/17 职场文书
改进工作作风心得体会
2016/01/23 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python