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中的isXX系列
Aug 01 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
juery框架写的弹窗效果适合新手
Nov 27 Javascript
Javascript验证上传图片大小[前台处理]
Jul 18 Javascript
Javascript中使用parseInt函数需要注意的问题
Apr 02 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
slideToggle+slideup实现手机端折叠菜单效果
May 25 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 Javascript
javascript实现多边形碰撞检测
Oct 24 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
什么是MVC,好东西啊
2007/05/03 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
六个窍门助你提高Python运行效率
2015/06/09 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
学期自我鉴定
2013/11/04 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
论文致谢词范文
2015/05/14 职场文书