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 客户端验证上传图片的大小(兼容IE和火狐)
Aug 15 Javascript
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
基于jquery的bankInput银行卡账号格式化
Aug 22 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
JavaScript时间转换处理函数
Apr 14 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
Feb 16 Javascript
javascript检测移动设备横竖屏
May 21 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
vue中tab选项卡的实现思路
Nov 25 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下实现农历日历的代码
2007/03/07 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
Python 流程控制实例代码
2009/09/25 Python
跟老齐学Python之变量和参数
2014/10/10 Python
python实现自动重启本程序的方法
2015/07/09 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python判断telnet通不通的实例
2019/01/26 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
python中加背景音乐如何操作
2020/07/19 Python
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
2015关于重阳节的演讲稿
2015/03/20 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
学前班教学反思
2016/02/24 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
Python 文字识别
2022/05/11 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript