面向对象的tab选项卡

面向对象 this的问题  用定时器 用了事件的之后

首先我们先布局一下 按照常规的js来做一下选项卡, 

<style type="text/css">
  ul, li{ list-style-type: none; margin: 0; padding: 0}
  #div1{ width: 300px; height: 30px; background: #ccc}
  #div1 li{width: 100px; float: left;; text-align: center; line-height: 30px; list-style-type: none; }
  .active{ background: #999}
  #div2{ width: 300px; height: 300px; background: #eee}
  #div2 div{ display: none;}
</style>
<script>
window.onload = function(){
   var oDiv1 = document.getElementById(‘div1‘);
   var oDiv2 = document.getElementById(‘div2‘);
   var oLi = oDiv1.getElementsByTagName(‘li‘);
   var oDiv = oDiv2.getElementsByTagName(‘div‘);
   for (var i = 0; i < oLi.length; i++) {
      oLi[i].index = i;
      oLi[i].onclick = function (){
        for (var i = 0; i < oLi.length; i++) {
          oLi[i].className = "";
          oDiv[i].style.display = ‘none‘;
        };
        this.className = ‘active‘;
        oDiv[this.index].style.display = ‘block‘;
      }
   };
}
</script>

<div id="div1">
  <ul>
    <li class="active">111111</li>
    <li>222222</li>
    <li>333333</li>
  </ul>
</div>
<div id="div2">
  <div style="display:block">11111</div>
  <div>22222</div>
  <div>33333</div>
</div>

下面我们来改写成面向对象

window.onload = function(){
   new TabSwitch(‘div1‘,‘div2‘);
   new TabSwitch(‘div3‘,‘div4‘)
}

function TabSwitch(id1,id2){
    var oDiv1 = document.getElementById(id1);
    var oDiv2 = document.getElementById(id2);
    this.oLi = oDiv1.getElementsByTagName(‘li‘);
    this.oDiv = oDiv2.getElementsByTagName(‘div‘);
    for (var i = 0; i < this.oLi.length; i++) {
      var _this = this;
      this.oLi[i].index = i;
      this.oLi[i].onclick = function(){
         _this.tab(this);
      }
    };
}
TabSwitch.prototype.tab = function(oli){
  for (var i = 0; i < this.oLi.length; i++) {
    this.oLi[i].className = "";
    this.oDiv[i].style.display = "none"
  }
  oli.className = "active";
  this.oDiv[oli.index].style.display = "block"
}
window.onload = function(){
   new TabSwitch(‘div1‘,‘div2‘);
}

function TabSwitch(id1,id2){//定义构造函数 两个参数为两个大div的id。
    var oDiv1 = document.getElementById(id1);
    var oDiv2 = document.getElementById(id2);
    this.oLi = oDiv1.getElementsByTagName(‘li‘);//定义为对象的属性
    this.oDiv = oDiv2.getElementsByTagName(‘div‘);//定义对象属性
    for (var i = 0; i < this.oLi.length; i++) {
      var _this = this; //改变this指向 次this指向new的对象保存在变量_this里
      this.oLi[i].index = i;
      this.oLi[i].onclick = function(){
         _this.tab(this);
      }
    };
}
TabSwitch.prototype.tab = function(oli){
  for (var i = 0; i < this.oLi.length; i++) {
    this.oLi[i].className = "";
    this.oDiv[i].style.display = "none"
  }
  oli.className = "active";
  this.oDiv[oli.index].style.display = "block"
}
时间: 2024-10-31 02:42:42

面向对象的tab选项卡的相关文章

面向对象的tab选项卡实现

利用最基础的面向对象的思想,实现tab选项卡效果: 效果截图: HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>面向对象的tab选项卡实现</title> <link rel="stylesheet" href="tab.css"> &l

【锋利的JQuery-学习笔记】Tab选项卡的实现

效果图: 关键点: 1.标签和标签内容都是用<ul><li>实现的,主要是通过Css样式设计成选项卡的模样. 2.用js代码实现点击标签时,标签内容的切换(做法是<div id="jnBrandList">横向滚动). html: <div id="jnBrand"> <div id="jnBrandTab"> <h2 title="品牌活动">品牌活动&

原生js实现tab选项卡里内嵌图片滚动特效代码

<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8"><title>原生js实现tab选项卡里内嵌图片滚动特效代码</title><meta name="keywords" content="原生js实现tab选项卡里内嵌图片滚动特效代码" /><meta name=&

原生JS画的tab选项卡

记录一下原生js写的tab选项卡 鼠标滑入可以切换图片 离开之后自动切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-

【Little Demo】左右按钮tab选项卡双切换

通过前一篇文章 从简单的Tab标签到Tab图片切换 的说明,相关效果也就可以实现了. 1.左右按钮tab选项卡双切换 很明显,左右两个按钮是 absolute 布局,另外就是内容部分和Tab标签部分. 1) 先实现Tab内容和标签部分的显示: HTML代码: <div class="tab-Infomations"> <div class="arrows"></div> <div class="tab-conten

可以自动切换的tab选项卡实现过程详解

可以自动切换的tab选项卡实现过程详解:关于选项卡大家一定不会陌生,应用非常的频繁,通常选项卡都是需要点击或者划过才能够实现切换.本章节分享一个能够实现自动切换的选项卡功能,并给出它的具体实现过程.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.so

移动web:tab选项卡

平常做移动端会用到tab选项卡,这和PC端有些区别,移动端是触摸滑动切换,PC端是点击.移入切换. 这里滑动切换就是一个移动端事件的应用,这里主要用到的触摸事件:touchstart.touchmove.touchend. 和做其他的效果一样,先有html结构,css样式修饰,再写JS代码. html: <div class="mtabs" id="tabs"> <ul class="mhead"> <li>t

语音导航的tab选项卡效果

前端开发whqet,csdn,王海庆,whqet,前端开发专家 ladies and 乡亲们,程序员同志们,周末仍然坚守工作岗位,或者学习不辍的童鞋们,福音来了. 语音识别高不高端.难不难? 今天给大家推荐一个简单易用的js实现的语音识别框架annyang,然后一个案例示范使用. 在线案例,下载收藏. annyang是一个能够实现语音识别的js类库,小巧易用(仅仅2k),兼容中文.接下来我们看看怎么使用. 首先导入该annyang库,可以使用CDN的方式,也可以下载来使用. <!--下载到本地使

各种效果的tab选项卡

;(function($){ $.fn.tabso=function( options ){ var opts=$.extend({},$.fn.tabso.defaults,options ); return this.each(function(i){ var _this=$(this); var $menus=_this.children( opts.menuChildSel ); var $container=$( opts.cntSelect ).eq(i); if( !$contai