JS实现标签页切换效果


Posted in Javascript onMay 04, 2017

本文实例为大家分享了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>

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

Javascript 相关文章推荐
JavaScript代码简单实现求杨辉三角给定行的最大值
Oct 29 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
Aug 04 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
微信小程序 商城开发(ecshop )简单实例
Apr 07 Javascript
详解微信小程序 相对定位和绝对定位
May 11 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 Javascript
angularjs实现猜大小功能
Oct 23 Javascript
ES6下React组件的写法示例代码
May 04 #Javascript
JS触摸事件、手势事件详解
May 04 #Javascript
详解Angular 4.x Injector
May 04 #Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 #Javascript
详解Node.js串行化流程控制
May 04 #Javascript
纯原生js实现贪吃蛇游戏
Apr 16 #Javascript
js调用刷新界面的几种方式
May 03 #Javascript
You might like
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
简单解决Python文件中文编码问题
2015/11/22 Python
python简单读取大文件的方法
2016/07/01 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
慰问敬老院活动总结
2014/04/26 职场文书
司法局火灾防控方案
2014/06/05 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
Fluentd搭建日志收集服务
2022/09/23 Servers