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 相关文章推荐
基于jquery的表头固定的若干方法
Jan 27 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
jQuery中parent()方法用法实例
Jan 07 Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 Javascript
JavaScript基础语法之js表达式
Jun 07 Javascript
js 函数式编程学习笔记
Mar 25 Javascript
js实现下拉框效果(select)
Mar 28 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
Vuex实现计数器以及列表展示效果
Mar 10 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 Javascript
Element中Slider滑块的具体使用
Jul 29 Javascript
Vue实现动态查询规则生成组件
May 27 Vue.js
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输出缓存(output_buffering)的深入理解
2013/06/13 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
django富文本编辑器的实现示例
2019/04/10 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
Python执行时间的几种计算方法
2020/07/31 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
门卫岗位职责
2013/11/15 职场文书
回门宴答谢词
2014/01/13 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript