欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现标签页切换效果

程序员文章站 2023-11-27 19:24:58
本文实例为大家分享了js标签页切换的具体代码,供大家参考,具体内容如下

本文实例为大家分享了js标签页切换的具体代码,供大家参考,具体内容如下

<html>
<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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。