JS 标签页切换(复杂)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>resize</title>
<style type="text/css">
*{margin:0;padding:0;}
 #wrap{width:500px; margin:10px auto; }
 #tag{ width:498px; overflow:hidden; background:#000; border:1px solid #000; }
 #tag li{list-style:none; float:left; margin-right:0px; color:white; padding:5px 20px; cursor: pointer;}
 #tag .current{ color:#000; background:#ccc; }
 #tagContent div{ width:498px; border:1px solid #000; border-top:none; height:300px; display:none; }
</style>
</head>
<body>
<div id="warp">
    <ul id="tag">
      <li>标签一</li>
      <li>标签二</li>
      <li>标签三</li>
      <li>标签4</li>
      <li>标签5</li>
   </ul>
   <div id="tagContent">
      <div class="J_tabClass"> 内容一<br>内容一 </div>
      <div class="J_tabClass"> 内容二<br>内容二 </div>
      <div class="J_tabClass"> 内容三<br>内容三 </div>
      <div class="J_tabClass"> 内容4<br>内容4 </div>
      <div class="J_tabClass"> 内容4<br>内容5555555555555555 </div>
   </div>
</div>
<script type="text/javascript">
//nameSpace
var VVG = {};
VVG.DOM = {};
//创建getElementsByClassName方法
VVG.DOM.getElementsByClassName = function(str,parent,tag){
   //父节点存在
if(parent){
   // 当父节点为string类型时,查找DOM节点,否则直接引用parent
      parent = typeof parent == "string" ? document.getElementById(parent):parent;
      // parent为空时提示错误信息
if(!parent) alert("找不到标签,请检查参数是否正确");
   }else{
      // 未传值时,父节点为body
      parent = document.body;
   }
   // tagContent为节点类型,未传值时为all节点
   tag = tag || "*";
   // 在父节点查找子节点,建立空数组arr
var els = parent.getElementsByTagName(tag),arr=[];
   for(var i=0,n=els.length;i<n;i++){
      // 查找每个节点下的classname,以空格分离为一个k数组
for(var j=0,k=els[i].className.split(" "),l=k.length;j<1;j++){
         // 当K数组中有一个值与str值相等时,记住这个标签并推入arr数组
if(k[j]==str){
            arr.push(els[i]);
            break;
         }
      }
   }
   // 返回数组
return arr;
}
//创建TabManager对象
VVG.TabManager = function(oo){
         this.root = oo.root || "warp";
         this.tabUlId = oo.tabUlId||"tabUlId";
         this.tabConId = oo.tabConId||"tabConId";
         this.tabConClass = oo.tabConClass||"J_tabClass";
         this.trggle = oo.trggle || "click";
         this.currentCss = oo.currentCss || "current";
      }
VVG.TabManager.prototype = {
      tabChange:function(){
         // 获取UL的id
var ulid = document.getElementById(this.tabUlId);
         // 获取UL下的LI元素
var ulli = ulid.getElementsByTagName("li");
         // 获取内容盒子DIV元素
var tabConId = document.getElementById(this.tabConId);
         // 获取root下的div的class为特定值的对象数组
var tabConClasses = VVG.DOM.getElementsByClassName(this.tabConClass,this.root,"div");
         // 初始化
         ulli[0].className = this.currentCss;
         tabConClasses[0].style.display = ‘block‘;
         for (var i = ulli.length - 1; i >= 0; i--) {
            // 赋值this 与 that,避免this混乱
var that = this;
            // 设置对象index属性
            ulli[i].index = i;
            // 设置对象的事件
            ulli[i]["on" + this.trggle] = function(){
               for(var j = tabConClasses.length - 1; j >= 0; j--){
                  tabConClasses[j].style.display = "none";
                  ulli[j].className = "";
               }
               tabConClasses[this.index].style.display = "block";
               this.className = that.currentCss;
            }
         }
      }
   }
// 新建对象实例
var TabManager1 = new VVG.TabManager(
   {
   root:"warp",//包裹tab对象的div层的ID名称,必填
   tabUlId:"tag",//TAB标签LI元素的父亲UL元素的ID名称,必填
   tabConId:"tagContent",//内容元素的包裹盒子的ID名称,必填   
   trggle:"mouseover",//切换方式,默认为click,可选
   currentCss:"current",//TAB标签liy元素的当前CSS名称,默认为current
   tabConClass:"J_tabClass",//内容元素的CLASS名称,默认为J_tabClass
   }
);
// 调用对象方法
TabManager1.tabChange();

</script>
</body>
</html>

时间: 2024-12-21 21:16:43

JS 标签页切换(复杂)的相关文章

web前端中实现多标签页切换的效果

在这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页 方法一: 首先,我们要把页面的大体框架和样式写出来,html和css代码如下: <ul id="tab">    <li id="tab1" onclick="show(1)">10元套餐</li>    <li id="tab2" oncli

python selenium-webdriver 标签页切换(十四)

测试过程中有时候会遇到点击某个按钮或者链接会弹出新的窗口,这时候我们的操作的页面还保持着最初打开页面,但是此时我们需要操作新打开的页面上的功能,这个时候我们需要切换一下标签页 . 其实页面的切换与frame的切换比较相识,一种切换时本页面内frame的操作,而标签页面是多页面的操作,道理很相似.下面讲解下操作页面标签会涉及到那些方法. driver.current_window_handle                      #获取当前窗口的句柄 driver.window_handle

vue单页面条件下添加类似浏览器的标签页切换功能

在用vue开发的时候,单页面应用程序,而又有标签页这种需求,各种方式实现不了, 从这个 到这个,然后再返回上面那个 因为每个标签页的route不一样,导致组件重新渲染的问题,怎么都不知道如何实现......... 简直郁闷到爆炸,后来和同学谈起的时候,说起生命周期这个才恍然大悟, 对于vue的生命周期,因为用的少,本身多用的是created,mounted这两个,都忘记beforeDestroy这些了,然后抓瞎了好久 实现方式是 每次销毁组件之前   缓存数据    能够用到的是 this.$d

html+css+js实现标签页切换

CSS部分: #Tab { margin:0 auto; width:640px; border:none; position:absolute; z-index:9; margin-left:320px; _margin-left:0px; padding-top:180px;}.Menubox { height:26px; border-bottom:2px solid #64B8E4; background:#none;}.Menubox ul { list-style:none; mar

简单实现tab标签页切换

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <style>

bootstrap3 - 标签页切换

<!DOCTYPE html> <html> <head lang="en">     <meta charset="UTF-8">     <title></title>     <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"

javascript标签页切换功能(极简代码)

1 <!doctype html> 2 <html lang="en"> 3 <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 4 <head> 5 <meta charset="UTF-8"> 6 <title>boss爱国</title> 7 <style&g

JS 监听浏览器标签页显示隐藏

JS 监听浏览器标签页显示隐藏 API document.hidden 判断页面是否隐藏的布尔值.页面隐藏包括 页面在后台标签页中 或者 浏览器最小化 document.visibilityState (只读属性), 返回document的可见性,4个值: hidden:文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 '锁屏状态' visible:此页面在前景标签页中,并且窗口没有最小化 prerender:页面在屏幕外执行预渲染处理 document.hidden 的值为 tru

ActionBar+Fragment实现顶部标签页

用ActionBar的TABS模式,和Fragment实现程序顶部的标签页切换. 一. MainActivity public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 取得ActionB