`
ahang8415
  • 浏览: 46381 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

开发中的用到tab的js(自己看的)

 
阅读更多

var tabview = {

  textPadding : 3, // Padding at the left of tab text - bigger value gives you wider tabs
  strictDocType : true,
  tabView_maxNumberOfTabs : 6, // Maximum number of tabs
 
 /* Don't change anything below here */
  dhtmlgoodies_tabObj : new Array(),
  activeTabIndex : new Array(),
  MSIE : navigator.userAgent.toLowerCase().indexOf('msie')>=0?true:false,
 
 // regExp : new RegExp(".*MSIE ([0-9]\.[0-9]).*","g"),
 // navigatorVersion : navigator.userAgent.replace(regExp,'$1'),
 
  ajaxObjects : new Array(),
  tabView_countTabs : new Array(),
  tabViewHeight : new Array(),
  tabDivCounter : 0,
  closeImageHeight : 8, // Pixel height of close buttons
  closeImageWidth : 8, // Pixel height of close buttons
 
 
 setPadding : function(obj,padding){
  var span = obj.getElementsByTagName('SPAN')[0];
  span.style.paddingLeft = padding + 'px'; 
  span.style.paddingRight = padding + 'px'; 
 },
 
 /**
   *展示TAB页,确定哪个显示为当前的TAB页
   *@parentId:父DIV的ID
   *@tabIndex: 展示的TAB为第几个
   **/
 
 showTab : function(parentId,tabIndex)
 {
  var parentId_div = parentId + "_";
  if(!document.getElementById('tabView' + parentId_div + tabIndex)){
   return;
  }
  if(this.activeTabIndex[parentId]>=0){
   if(this.activeTabIndex[parentId]==tabIndex){
    return;
   }
 
   var obj = document.getElementById('tabTab'+parentId_div + this.activeTabIndex[parentId]);
   
   obj.className='tabInactive';
   var img = obj.getElementsByTagName('IMG')[0];
   if(img.src.indexOf('tab_')==-1)img = obj.getElementsByTagName('IMG')[1];
   img.src = 'image/tab_right_inactive.gif';
   document.getElementById('tabView' + parentId_div + this.activeTabIndex[parentId]).style.display='none';
  }
  
  var thisObj = document.getElementById('tabTab'+ parentId_div +tabIndex); 
   
  thisObj.className='tabActive';
  var img = thisObj.getElementsByTagName('IMG')[0];
  if(img.src.indexOf('tab_')==-1)img = thisObj.getElementsByTagName('IMG')[1];
  img.src = 'image/tab_right_active.gif';
  
  document.getElementById('tabView' + parentId_div + tabIndex).style.display='block';
  this.activeTabIndex[parentId] = tabIndex;
  

  var parentObj = thisObj.parentNode;
  var aTab = parentObj.getElementsByTagName('DIV')[0];
  countObjects = 0;
  var startPos = 2;
  var previousObjectActive = false;
  while(aTab){
   if(aTab.tagName=='DIV'){
    if(previousObjectActive){
     previousObjectActive = false;
     startPos-=2;
    }
    if(aTab==thisObj){
     startPos-=2;
     previousObjectActive=true;
     this.setPadding(aTab,this.textPadding+1);
    }else{
     this.setPadding(aTab,this.textPadding);
    }
    
    aTab.style.left = startPos + 'px';
    countObjects++;
    startPos+=2;
   }   
   aTab = aTab.nextSibling;
  } 
  return;
 },
 /**
   *点击TAB标签,显示该TAB页
   *
   *
   **/
 tabClick : function()
 {
  var idArray = this.id.split('_');  
  try{
  tabview.showTab((this).parentNode.parentNode.id,idArray[idArray.length-1].replace(/[^0-9]/gi,''));
  }catch(e){}
 },
 
 rolloverTab : function()
 {
  if(this.className.indexOf('tabInactive')>=0){
   this.className='inactiveTabOver';
   var img = this.getElementsByTagName('IMG')[0];
   if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
   img.src = 'image/tab_right_over.gif';
  }
  
 },
 rolloutTab : function()
 {
  if(this.className ==  'inactiveTabOver'){
   this.className='tabInactive';
   var img = this.getElementsByTagName('IMG')[0];
   if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
   img.src = 'image/tab_right_inactive.gif';
  }
  
 },
 
 hoverTabViewCloseButton : function()
 {
  this.src = this.src.replace('close.gif','close_over.gif');
 },
 
 stopHoverTabViewCloseButton : function()
 {
  this.src = this.src.replace('close_over.gif','close.gif');
 },
 /**
   *初始化TAB标签
   *
   **/
 initTabs : function(mainContainerID,tabTitles,activeTab,width,height,closeButtonArray,additionalTab)
 {
  if(!closeButtonArray)closeButtonArray = new Array();
  if(!additionalTab || additionalTab=='undefined'){   
   this.dhtmlgoodies_tabObj[mainContainerID] = document.getElementById(mainContainerID);
   width = width + '';
   if(width.indexOf('%')<0)width= width + 'px';
   this.dhtmlgoodies_tabObj[mainContainerID].style.width = width;
      
   height = height + '';
   if(height.length>0){
    if(height.indexOf('%')<0)height= height + 'px';
    //this.dhtmlgoodies_tabObj[mainContainerID].style.height = "auto !important";
    //this.dhtmlgoodies_tabObj[mainContainerID].style.height = height;
    this.dhtmlgoodies_tabObj[mainContainerID].style.minHeight = height;
   }
   

   this.tabViewHeight[mainContainerID] = height;
   
   var tabDiv = document.createElement('DIV');  
   var firstDiv = this.dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0]; 
   
   this.dhtmlgoodies_tabObj[mainContainerID].insertBefore(tabDiv,firstDiv); 
   tabDiv.className = 'dhtmlgoodies_tabPane';   
   this.tabView_countTabs[mainContainerID] = 0;

  }else{
   var tabDiv = this.dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];
   var firstDiv = this.dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[1];
   height = this.tabViewHeight[mainContainerID];
   activeTab = this.tabView_countTabs[mainContainerID];  
 
   
  }
  
  
  
  for(var no=0;no<tabTitles.length;no++){
   var aTab = document.createElement('DIV');
   aTab.id = 'tabTab' + mainContainerID + "_" +  (no + this.tabView_countTabs[mainContainerID]);
   aTab.onmouseover = this.rolloverTab;
   aTab.onmouseout = this.rolloutTab;
   aTab.onclick = this.tabClick;
   aTab.className='tabInactive';
   tabDiv.appendChild(aTab);
   var span = document.createElement('SPAN');
   span.innerHTML = tabTitles[no];
   span.style.position = 'relative';
   aTab.appendChild(span);
   
   if(closeButtonArray[no]){
    var closeButton = document.createElement('IMG');
    closeButton.src = 'image/close.gif';
    closeButton.height = this.closeImageHeight + 'px';
    closeButton.width = this.closeImageHeight + 'px';
    closeButton.setAttribute('height',this.closeImageHeight);
    closeButton.setAttribute('width',this.closeImageHeight);
    closeButton.style.position='absolute';
    closeButton.style.top = '6px';
    closeButton.style.right = '0px';
    closeButton.onmouseover = this.hoverTabViewCloseButton;
    closeButton.onmouseout = this.stopHoverTabViewCloseButton;
    
    span.innerHTML = span.innerHTML + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 
    
    var deleteTxt = span.innerHTML+'';

    closeButton.onclick = function(){
     var needid = this.parentNode.parentNode.id;
     var parentid = this.parentNode.parentNode.parentNode.parentNode.id;
     var idArray = needid.split('_');
     var idArray = this.parentNode.parentNode.id.split('_'); 
     tabview.showTab($(this.parentNode.parentNode.id).parentNode.parentNode.id,idArray[idArray.length-1].replace(/[^0-9]/gi,''));
     tabview.closebuttondeleteTab(idArray[idArray.length-1].replace(/[^0-9]/gi,''),parentid);};
    span.appendChild(closeButton);
   }
   
   var img = document.createElement('IMG');
   img.valign = 'bottom';
   img.src = 'image/tab_right_inactive.gif';
   // IE5.X FIX
   //if((navigatorVersion && navigatorVersion<6) || (MSIE && !strictDocType)){
   // img.style.styleFloat = 'none';
   // img.style.position = 'relative'; 
   // img.style.top = '4px'
   // span.style.paddingTop = '4px';
   // aTab.style.cursor = 'hand';
   //} // End IE5.x FIX
   aTab.appendChild(img);
  }

  var tabs = this.dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV');
  var divCounter = 0;
  for(var no=0;no<tabs.length;no++){
   if(tabs[no].className=='dhtmlgoodies_aTab' && tabs[no].parentNode.id == mainContainerID){
    //if(height.length>0)tabs[no].style.height = height;
    if(height.length>0){
     tabs[no].style.minHeight = height;
    }
    tabs[no].style.display='none';
    tabs[no].id = 'tabView' + mainContainerID + "_" + divCounter;
    divCounter++;
   }   
  } 
  this.tabView_countTabs[mainContainerID] = this.tabView_countTabs[mainContainerID] + tabTitles.length; 
  this.showTab(mainContainerID,activeTab);

  return activeTab;
 },
 

 resetTabIds : function(parentId)
 {
  var tabTitleCounter = 0;
  var tabContentCounter = 0;
  
  
  var divs = this.dhtmlgoodies_tabObj[parentId].getElementsByTagName('DIV');

  
  for(var no=0;no<divs.length;no++){
   if(divs[no].className=='dhtmlgoodies_aTab'){
    divs[no].id = 'tabView' + parentId + '_' + tabTitleCounter;
    tabTitleCounter++;
   }
   if(divs[no].id.indexOf('tabTab')>=0){
    divs[no].id = 'tabTab' + parentId + '_' + tabContentCounter; 
    tabContentCounter++;
   } 
   
    
  }
 
  this.tabView_countTabs[parentId] = tabContentCounter;
 },
 
 createNewTabSel : function (parentId,tabTitle,tabContent,tabContentUrl,closeButton,tag){
  var num = this.checkCheckbox('checkbox32');
  var arrary = num.split(":"); 
  alert(arrary);     
  if(num == 'not select'){
         alert('not select!');
  }
  else if(arrary.length==2){
       if (tag=='1'||tag=='3'){
          var selId = arrary[0].replace(/,/g,"");
          tabContentUrl = tabContentUrl + '?id=' + selId;
          alert("&&&");
          this.createNewTab(parentId,tabTitle,tabContent,tabContentUrl,closeButton);
         }else
             this.createNewTab(parentId,tabTitle,tabContent,tabContentUrl,closeButton);
  }else if(arrary.length>2){
         alert('more!!!');
     }   
 },
 
 createNewTab : function (parentId,tabTitle,tabContent,tabContentUrl,closeButton)
 {
    
      if(this.tabView_countTabs[parentId]>=this.tabView_maxNumberOfTabs)return; // Maximum number of tabs reached - return
      var div = document.createElement('DIV');
 
      div.className = 'dhtmlgoodies_aTab';
      this.dhtmlgoodies_tabObj[parentId].appendChild(div);  

      var tabId = this.initTabs(parentId,Array(tabTitle),0,'','',Array(closeButton),true);
      //if(tabContent)div.innerHTML = tabContent;
      if(tabContentUrl){
      pf.loadPage(tabContentUrl,div.id);  
      }
 },

 getNewTab : function (parentId,tabTitle,tabContent,closeButton,selId)
 {
    
      if(this.tabView_countTabs[parentId]>=this.tabView_maxNumberOfTabs)return; // Maximum number of tabs reached - return
      var div = document.createElement('DIV');
 
      div.className = 'dhtmlgoodies_aTab';
      this.dhtmlgoodies_tabObj[parentId].appendChild(div);  

      var tabId = this.initTabs(parentId,Array(tabTitle),0,'','',Array(closeButton),true);
      if(tabContent)div.innerHTML = tabContent;
      return div.id;
 },  
 
 /**
   *删除TAB页
   *
   **/
 deleteTab : function(tabIndex,parentId)
 { 
      var tabIndex = this.activeTabIndex[parentId];
   if(document.getElementById('tabTab' + parentId + '_' + tabIndex)){
    var obj = document.getElementById('tabTab' + parentId + '_' + tabIndex);
    var id = obj.parentNode.parentNode.id;
    obj.parentNode.removeChild(obj);
    var obj2 = document.getElementById('tabView' + parentId + '_' + tabIndex);
    obj2.parentNode.removeChild(obj2);
    this.resetTabIds(parentId);
    this.activeTabIndex[parentId]=-1;
    this.showTab(parentId,'0');
   }   
   
 },

 closebuttondeleteTab : function(tabIndex,parentId)
 {

   if(document.getElementById('tabTab' + parentId + '_' + tabIndex)){
    var obj = document.getElementById('tabTab' + parentId + '_' + tabIndex);
    var id = obj.parentNode.parentNode.id;
    obj.parentNode.removeChild(obj);
    var obj2 = document.getElementById('tabView' + parentId + '_' + tabIndex);
    obj2.parentNode.removeChild(obj2);
    this.resetTabIds(parentId);
    this.activeTabIndex[parentId]=-1;
    this.showTab(parentId,'0');
   }   
  
 },

 /*
 *checkbox  判断checkbox选择,可单选,多选并返回所选项的ID数组
 *
 *@param objNam  checkbox name
 */
 checkCheckbox : function (objNam){
 
    var obj = document.getElementsByName(objNam);
    var objLen= obj.length;   
    var objN=0;   //
    var nameValue='';
    var value = '';
    var i;
    for (i = 0;i< objLen;i++){
      if (obj [i].checked==true) {
       objN++;
       value = obj[i].value;
       nameValue = nameValue + value +':';
      }
    }
    if(objN==1)
        return value + ':' + 'one';
    else if(objN==0)
        return 'not select';
    else if(objN>1)
        return nameValue + 'more';
 }

};

 

下面是获得他的div的id两种方法,虽然第一个方法复杂,但是可以很好研究了tab的js

//增加新的考评选项
 //urlstr:要处理的URL地址
  addAppraisalModel:function(urlstr){
  
  //打开一个新的tab。其父节点是一个id为'appraisalList'的DIV,
  tabview.createNewTab('appraisalList',appraisalResource.tabModelName0,'',urlstr,true);
 //获得父DIV节点
  var pdiv = document.getElementById('appraisalList');
    //获得父节点的最后一个孩子,就是最新打开的tab。  
  var lastDivNode = pdiv.lastChild;
    //我在主页面放了一个隐藏的<input>,用来存放最新打开的tab DIV的id。以便以后对此DIV进行刷新  
  var hiddenIndex = document.getElementById("tabIndex");
   if(hiddenIndex != null){
    hiddenIndex.value = lastDivNode.id;
   }
 },

 

第二种方法,比较简单。就是把要加载的页面放到指定的div中。这样div的id就可以我们自己来指定了。不用在动态的获得了

  • js.rar (5.8 KB)
  • 下载次数: 81
分享到:
评论
1 楼 sackie 2009-01-01  
学习中

相关推荐

    javascript tab标签 不规则TAB选项卡效果源码

    4. **数据存储与状态管理**:为了跟踪当前选中的Tab,开发者需要在JavaScript中存储和管理状态。这可能通过全局变量、对象属性或者使用`localStorage`来实现。 5. **动画效果**:不规则的Tab效果可能包含动画过渡,...

    js简单实现tab滚动方法

    在JavaScript中实现Tab滚动功能是一项常见的前端开发任务,主要用于创建具有滚动效果的选项卡界面,让用户可以方便地浏览和切换多个视图。本教程将基于提供的`tab2011.css`和`tab2011.js`文件,探讨如何通过...

    炫酷tab页源码,请看tab.zip

    在移动应用开发中,Tab(标签)是一种常见的用户界面元素,用于展示多个并行的视图或内容区域。"炫酷tab页"通常指的是设计独特、交互效果吸引人的Tab组件,能够提升用户的操作体验和应用的整体美感。在这个"炫酷tab...

    分步解析JavaScript实现tab选项卡自动切换功能

    这通常是通过在JavaScript中设置一个定时器(如`setInterval`)来实现的,它会周期性地调用切换tab项的函数。 为了实现tab项的自动切换功能,我们通常需要一个Tab类来封装相关的逻辑,包括初始化、事件绑定以及切换...

    经典JS TAB 滑动门代码

    JavaScript(简称JS)是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发,实现客户端的交互效果。在本案例中,我们关注的是"经典JS TAB 滑动门代码",这是一种常见的前端技术,用于创建动态的、可交互的...

    自己实现的Tab标签组件

    本文将深入探讨如何自己实现一个Tab标签组件,主要针对标题为“自己实现的Tab标签组件”的主题,结合提供的博客链接(虽然实际链接无法在此环境中访问,但我们可以根据常规的组件开发流程进行分析)以及标签“源码”...

    javascript tab标签 韩国购物网Flash标签切换效

    总的来说,JavaScript tab标签切换效果的实现涉及到了前端开发中的基本技能,包括DOM操作、事件处理、CSS样式控制以及状态管理。通过学习和实践此类项目,开发者可以提升自己的前端技能,更好地理解和运用JavaScript...

    HTML-tab容器-竖直切换特效-源码

    在本示例中,layui的Tab组件可能被用到了,它支持自定义样式和多种切换效果,可以轻松实现竖直切换。layui的API和文档可以帮助开发者快速理解和应用此特效。 5. **响应式设计**:考虑到现代网页设计对多设备兼容性...

    CSS+JS实现的圆角边框TAB选项卡滑动门代码

    4. **DOM操作**:在JavaScript中,Document Object Model(DOM)提供了操作HTML元素的方法。通过`document.getElementById`或`document.querySelector`选取元素,然后修改其`style`属性或添加/删除类名,实现样式的...

    tab块测试可用

    在IT行业中,"tab块测试可用"这一主题主要涉及到网页设计和前端开发,特别是与用户界面(UI)和用户体验(UX)设计相关的部分。Tab块通常用于组织和展示大量信息,使得用户能够通过切换不同的选项卡来查看相关内容,...

    下拉式tab标签导航

    在IT行业中,下拉式Tab标签导航是一种常见的用户界面(UI)设计模式,它用于组织和切换多个内容区域,提供了一种高效的屏幕空间利用方式。这种设计尤其适用于移动设备,因为它们可以节省有限的屏幕空间,同时保持...

    Bootstrap Ace模板 tab页效果

    在Ace模板中,可能已经内置了一些自定义样式和JavaScript,以实现更美观、更符合模板风格的tab切换效果。这可能涉及到对Bootstrap默认CSS的覆盖,以及使用jQuery来处理事件和动画效果。例如,可能会用到以下...

    tab标签样式图片幻灯片切换效果.zip

    这些图片可能被HTML引用,或者在JavaScript中动态加载。在CSS中,可能会对这些图片进行尺寸调整、位置定位等样式设置,以适应幻灯片的设计。 5. **其他代码(如:jQuery库或其他框架)**: 如果"index.html"或"js...

    基于JS的无比可爱tab标签栏切换效果的实现代码.zip

    首先,JavaScript(简称JS)是Web开发中的关键脚本语言,它允许开发者在不刷新页面的情况下动态更新内容,创建交互式用户界面。在Tab切换效果中,JS主要用于监听用户的点击事件,根据用户的选择切换对应的Tab内容。 ...

    JQuery Tab 效果

    JQuery Tab 效果是一种常见的前端网页...总的来说,JQuery Tab效果是前端开发中的一个基础且实用的功能,它涉及到DOM操作、事件处理、样式控制等多个方面,通过学习和实践,你可以掌握这一技术并应用到自己的项目中。

    tab选项多对多

    标题“tab选项多对多”通常指的是在编程或者软件开发中,特别是在Web应用中,如何实现Tab组件的多对多关系。在Web界面设计中,Tab控件是一种常见的交互元素,用于将大量信息分组并展示在不同的标签页下,以提高用户...

    纵向Tab ---ext

    【标题】:“纵向Tab ---ext”指的是在网页或者应用程序中使用的一种特殊布局方式,将传统的水平排列的Tab标签改为垂直方向展示。这种设计通常用于解决屏幕空间有限或需要清晰展示大量Tab标签的情况,使得用户可以更...

    jQuery tab标签幻灯片.zip

    在IT行业中,jQuery库是网页开发中不可或缺的一部分,尤其在处理DOM操作、事件处理和动画效果时。"jQuery tab标签幻灯片"是一款利用jQuery实现的动态效果,它结合了tab式导航和幻灯片展示,为用户提供了一种交互式的...

    写html时,经常用到tab结构

    为了使tab结构更加适应现代Web开发,还可以考虑使用前端框架如Bootstrap或Vue.js等提供的现成的tab组件,这些组件通常包含更丰富的功能,如动画过渡、自动激活、响应式设计等。在实际开发中,确保tab结构的可访问性...

    jquery按键渐变显示tab标签

    在网页设计中,"jQuery按键渐变显示tab标签"是一种常见的交互效果,它使得用户可以通过按下键盘上的按键来逐个浏览或切换不同的tab内容。这种效果不仅提升了用户体验,还为网页增添了动态美感。下面我们将详细探讨这...

Global site tag (gtag.js) - Google Analytics