`
bestirwiny
  • 浏览: 6702 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

js tab控件

阅读更多
这两天学prototype框架,用它写了一个类似IE7.0跟firefox中tab功能类似的控件,以求可以达到重用的目的,由于css学的不大好,css还没有调试好,暂时还很丑陋。有css熟的劳烦帖上来交流。代码有些地方写的还感觉有些恶心,有待提高,在下也是初学js,大家多包含。
js 代码
  1.   
  2.   
  3. function createEle(tag)   
  4. {   
  5.  return document.createElement(tag);   
  6. }   
  7.   
  8. function createDiv(_id)   
  9. {   
  10.  var bgDiv = createEle("DIV");   
  11.  bgDiv.id = _id;   
  12.  return bgDiv;   
  13. }   
  14.   
  15. TabContainer = Class.create();   
  16. TabContainer.id = "__container_id__";   
  17. TabContainer.itemContainerDivId = "__item_container_Div_id__";   
  18. TabContainer.itemContainerId = "__item_container_id__";   
  19. TabContainer.contentContainerId = "__content_container_id__";   
  20. TabContainer.prototype = {   
  21.     /*---------------- initializer ------------------*/  
  22.  initialize : function(_initTab,_options)   
  23.  {   
  24.   this.Tabs = new Array();   
  25.   this.initTab = _initTab;   
  26.   this.options =    
  27.   {   
  28.    container             : document.body,   
  29.    maxTabs               : 3,   
  30.    tabContainerClass     : "tab-container",   
  31.    itemContainerClass    : "item-container",   
  32.    itemContainerOLClass  : "item-container-ol",   
  33.    contentContainerClass : "content-container"  
  34.   };   
  35.   this.init(this._options);    
  36.  },   
  37.     
  38.  /*-----------------  private method -----------------------*/  
  39.  init : function(_options)   
  40.  {   
  41.   this.setOptions(_options);   
  42.   this.createTabContainer();   
  43.   this.addTab(this.initTab);   
  44.   Event.observe($(TabContainer.itemContainerId), "click"this.clickHandler.bind(this), true);   
  45.   Event.observe($(TabContainer.itemContainerId), "dblclick"this.dblclickHandler.bind(this), true);   
  46.  },   
  47.     
  48.  createTabContainer : function()   
  49.  {   
  50.   var tabContainer = createDiv(TabContainer.id);   
  51.      tabContainer.className = this.options.tabContainerClass;   
  52.      tabContainer.appendChild(this.createTabItemContainer());   
  53.      tabContainer.appendChild(this.createTabContentContainer());   
  54.      this.options.container.appendChild(tabContainer);   
  55.  },   
  56.     
  57.  createTabItemContainer : function()   
  58.  {   
  59.   var itemContainer = createDiv(TabContainer.itemContainerDivId);   
  60.   itemContainer.className = this.options.itemContainerClass;   
  61.   var itemContainerOL = createEle("ul");   
  62.   itemContainerOL.id = TabContainer.itemContainerId;   
  63.   itemContainerOL.className = this.options.itemContainerOLClass;   
  64.   itemContainer.appendChild(itemContainerOL);   
  65.   return itemContainer;   
  66.  },   
  67.     
  68.  createTabContentContainer : function()   
  69.  {   
  70.   var contentContainer = createDiv(TabContainer.contentContainerId);   
  71.   contentContainer.className = this.options.contentContainerClass;   
  72.   return contentContainer;   
  73.  },   
  74.     
  75.  setOptions : function(_options)   
  76.  {   
  77.   this.options.extend(_options||{});   
  78.   this.options.container = $(this.options.container);   
  79.  },   
  80.     
  81.  addTab : function(_tab)   
  82.  {   
  83.   if(this.Tabs.length  {   
  84.    $(TabContainer.itemContainerId).appendChild(_tab.tabItem);;   
  85.    $(TabContainer.contentContainerId).appendChild(_tab.tabContent);   
  86.       this.Tabs[this.Tabs.length] = _tab;   
  87.       _tab.show();   
  88.       alert(_tab.options.addCallBack);   
  89.       if(_tab.options.addCallBack)   
  90.     _tab.options.addCallBack();   
  91.   }   
  92.  },   
  93.     
  94.  removeTab : function(_tabId)   
  95.  {   
  96.   if(this.Tabs.length>1)   
  97.   {   
  98.    for(var i=0;i   {   
  99.     if(this.Tabs[i].tabId==_tabId)   
  100.     {   
  101.      $(TabContainer.itemContainerId).removeChild(this.Tabs[i].tabItem);   
  102.            $(TabContainer.contentContainerId).removeChild(this.Tabs[i].tabContent);   
  103.      if(this.Tabs[i].options.removeCallBack)   
  104.          this.Tabs[i].options.removeCallBack();   
  105.      this.Tabs.splice(i,1);   
  106.      if(i=this.Tabs.length-1)    
  107.      {   
  108.       this.Tabs[i-1].show();   
  109.      }   
  110.      else  
  111.      {   
  112.       this.Tabs[i].show();   
  113.      }   
  114.     }   
  115.    }   
  116.   }   
  117.  },   
  118.     
  119.  showTab: function(_tabId)   
  120.  {   
  121.   for(var i=0;i  {   
  122.    if(this.Tabs[i].tabId==_tabId)   
  123.    {   
  124.     this.Tabs[i].show();   
  125.     this.Tabs[i].tabItem.style.backgroundColor = "EEEEEE";   
  126.     this.Tabs[i].tabItem.setColor = true;   
  127.    }   
  128.    else  
  129.    {   
  130.     this.Tabs[i].hide();   
  131.     this.Tabs[i].tabItem.setColor = false;   
  132.    }   
  133.   }   
  134.  },   
  135.     
  136.  clickHandler : function(evnt)   
  137.  {   
  138.   var srcEle = Event.element(evnt);   
  139.   var regxValue = /^\w+_item$/;   
  140.   if(regxValue.test(srcEle.id))   
  141.   {   
  142.    this.showTab(srcEle.id.substr(0,srcEle.id.length-5))   
  143.   }   
  144.  },   
  145.     
  146.  dblclickHandler : function(evnt)   
  147.  {   
  148.   var srcEle = Event.element(evnt);   
  149.   var regxValue = /^\w+_item$/;   
  150.   if(regxValue.test(srcEle.id))   
  151.   {   
  152.    this.removeTab(srcEle.id.substr(0,srcEle.id.length-5))   
  153.   }   
  154.  }   
  155. }   
  156.   
  157. Tab = Class.create();   
  158. Tab.prototype = {   
  159.  /*---------------- initializer ------------------*/  
  160.  initialize : function(_tabId,_tabItemValue,_tabContentValue,_options)   
  161.  {   
  162.   this.tabId = _tabId;   
  163.   this.Tabs = new Array();   
  164.   this.tabItem = null;   
  165.   this.tabContent = null;   
  166.   this.tabItemValue = _tabItemValue;   
  167.   this.tabContentValue = _tabContentValue;   
  168.   this.options =    
  169.   {   
  170.    itemClass             : "tab-item",   
  171.    itemContentClass      : "tab-content",   
  172.    addCallBack       : null,   
  173.    removeCallBack         : null  
  174.   };   
  175.   this.init(this._options);   
  176.  },   
  177.     
  178.  /*-----------------  private method -----------------------*/  
  179.  init : function(_options)   
  180.  {   
  181.   this.setOptions(_options);   
  182.   this.createTabItem();   
  183.   this.createTabContent();   
  184.   Event.observe(this.tabItem, "mouseover"this.mouseOverHandler, true);   
  185.   Event.observe(this.tabItem, "mouseout"this.mouseOutHandler, true);   
  186.  },   
  187.     
  188.  setOptions : function(_options)   
  189.  {   
  190.   this.options.extend(_options||{});   
  191.  },   
  192.     
  193.  createTabItem : function()   
  194.  {   
  195.   var _tabItem = createEle("li");   
  196.   _tabItem.id = this.tabId+"_item";   
  197.   _tabItem.className = this.options.itemClass;   
  198.   _tabItem.innerHTML = this.tabItemValue;   
  199.   this.tabItem = _tabItem;   
  200.  },   
  201.     
  202.  createTabContent : function()   
  203.  {   
  204.   var _itemContent = createDiv(this.tabId+"_content");   
  205.   _itemContent.className = this.options.itemContentClass;   
  206.   _itemContent.innerHTML = this.tabContentValue;   
  207.   this.tabContent = _itemContent;   
  208.  },   
  209.     
  210.  show : function()   
  211.  {   
  212.     
  213.   this.tabContent.style.display = "block";   
  214.  },   
  215.     
  216.  hide : function()   
  217.  {   
  218.   this.tabItem.style.backgroundColor = "FFFFFF";   
  219.   this.tabContent.style.display = "none";   
  220.  },   
  221.     
  222.  mouseOverHandler : function(evnt)   
  223.  {   
  224.   var srcEle = Event.element(evnt);   
  225.   srcEle.style.backgroundColor = "EEEEEF";   
  226.  },   
  227.     
  228.  mouseOutHandler : function(evnt)   
  229.  {   
  230.   var srcEle = Event.element(evnt);   
  231.   if(srcEle.setColor!=true)   
  232.       srcEle.style.backgroundColor = "FFFFFF";   
  233.  }   
  234. }   
  235.   
分享到:
评论

相关推荐

    javascript 经典tab控件

    在本主题中,我们关注的是"javascript 经典tab控件",这是一种常见的网页组件,用于组织和展示多块内容,让用户能够通过点击不同的标签来切换显示的内容。这种控件在许多网站和应用程序中都有应用,如设置页面、产品...

    Tab控件的学习

    在编程界,Tab控件是一种常见的用户界面元素,它允许用户在不同的视图或内容之间进行切换,而无需打开新的窗口或关闭当前视图。在本文中,我们将深入探讨Tab控件的使用,包括它的基本概念、实现方式、常见功能以及在...

    Tab控件的使用方法及禁用某一页的方法

    在Windows编程或者Web开发中,Tab控件是一种常见的用户界面元素,它允许用户在不同的页面或选项卡之间切换,以展示不同的内容。本教程将详细讲解Tab控件的使用方法以及如何禁用其中的某一页。 一、Tab控件的基本...

    Tab控件

    **Tab控件详解** 在软件开发中,Tab控件是一种常见的用户界面元素,它允许用户在多个页面或视图之间切换,每个页面通常称为一个标签页。这种设计大大提升了用户体验,因为它有效地组织了大量信息,使得用户能够快速...

    Tab控件(类型于AJAX里的TAB控件)

    在AJAX(Asynchronous JavaScript and XML)技术出现后,Tab控件得到了进一步的发展,能够实现无刷新页面切换,提升用户体验。以下是对Tab控件及其与AJAX关联的详细解释。 一、Tab控件的基本原理 Tab控件通常由...

    tab控件+窗口分割

    "Tab控件+窗口分割"是一种常见的界面设计模式,它在许多应用程序中被广泛使用,如IDE(集成开发环境)、文本编辑器、文件管理器等。这种设计能够高效地组织和展示大量信息,使得用户能够在有限的屏幕空间内进行多...

    好用的网页tab控件

    二、JS实现Tab控件 1. 原生JavaScript实现:通过事件监听(如`addEventListener`)来处理用户对标签的点击,根据点击的标签切换显示的内容面板。同时,可以通过CSS样式控制,例如设置`display:none`或`display:...

    类似网易的javascript+css做的Tab控件

    这个“类似网易的javascript+css做的Tab控件”是一个模仿网易网站Tab功能的实现,利用JavaScript动态交互性和CSS样式设计来创建一个高效的用户体验。 首先,CSS(层叠样式表)在这个过程中起着关键作用,它定义了...

    ACE_ADMIN tab控件

    "ACE_ADMIN tab控件"是一个专门针对 ace admin 框架优化的Tab控件,它旨在提升框架原有Tab组件的功能,特别是在右键支持方面。Ace Admin是一个流行的后台管理界面模板,它以其简洁、高效和强大的功能而受到开发者的...

    bootstrap-closable-tab.js tab标签页扩展之关闭全部和关闭其他

    而"bootstrap-closable-tab.js"则是在原生Bootstrap Tab组件的基础上进行的扩展,增加了标签页的关闭功能,使得用户可以根据需要关闭不需要的标签页,提高了交互性和用户体验。 在这个扩展中,`bootstrap-closable-...

    js实现的 tab控件

    1、使用javascript实现的tab 控件,能动态加载数据。 2、使用反射实现了 将从数据库查询出来的数据集转换成对象集合的...求大侠 能给出对tab控件修改的意见。多么希望这个控件的功能能在大家的修改下变的更加强大。

    tab控件源码下载

    在IT领域,Tab控件是一种常见的用户界面元素,它允许用户在多个视图或页面间进行切换,而无需打开新的窗口或使用复杂的导航结构。在本篇中,我们将深入探讨Tab控件的基本概念、功能、使用场景以及如何实现一个Tab...

    网页tab控件 支持多浏览器

    3. JavaScript 交互:JavaScript是实现Tab控件动态功能的关键。一般会监听Tab标签的点击事件,当用户点击某个Tab时,切换内容区域的显示状态。这可能涉及到DOM操作(如修改元素的class属性来控制可见性)和动画效果...

    CSS+静态TAB控件

    在不使用JavaScript或任何服务器端技术的情况下,仅依靠CSS(层叠样式表)实现的静态TAB控件是一种高效且灵活的方法。本文将深入探讨如何使用CSS来创建这样的控件,并分享一些优化和扩展策略。 1. **基础结构** ...

    Tab控件(1.访淘宝Tab,2.访博客园(新闻频道的Tab))

    在网页设计和开发中,Tab控件是一种常见的用户界面元素,用于组织和展示大量信息,让用户可以方便地在不同部分之间切换。本示例主要涵盖了两个应用实例:访淘宝Tab和访博客园(新闻频道的Tab)。我们将深入探讨Tab控件...

    ajax和php做tab控件源代码

    - index.html:主HTML文件,包含Tab控件的HTML结构和JavaScript代码。 - style.css:CSS文件,定义Tab控件的样式。 - script.js:JavaScript文件,实现Ajax请求和事件处理。 - server.php:PHP文件,处理Ajax请求并...

    ajax实现tab控件

    本文将深入探讨如何使用Ajax来实现一个Tab控件,以提供更流畅的用户体验。 首先,Tab控件是网页界面设计中常见的一种组件,用于组织和展示多个相关的页面或内容区域。用户可以通过点击不同的Tab来切换显示的内容,...

    tabpane--js的tab控件

    Tab控件通常由一排可点击的标签和与之对应的面板组成,用户可以通过点击不同的标签来切换显示的内容。本文将深入探讨如何使用JavaScript实现一个功能完备的Tab Pane控件,以及相关的源码解析。 首先,我们需要理解...

    tab控件 动态加载数据

    使用javascript实现的tab 控件,能动态加载数据。 使用反射实现了将从数据库 查询出来的数据集 字段转换成 对象集合的功能, ...求大侠 能给出对tab控件修改的意见。多么希望这个控件的功能更加强大。

    Tab控件使用的最简纯净Demo.rar

    实现一个最简纯净的Tab控件Demo涉及到HTML、CSS和JavaScript的基本应用,通过合理的布局和交互设计,我们可以创建出符合用户需求的高效界面。在实际项目中,可以根据具体的技术栈和应用场景选择合适的实现方式,以...

Global site tag (gtag.js) - Google Analytics