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 相关文章推荐
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
JavaScript 语言的递归编程
May 18 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
微信小程序报错: thirdScriptError的错误问题
Jun 19 Javascript
如何理解Vue前后端数据交互与显示
May 10 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新手上路(十三)
2006/10/09 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
js实现日期级联效果
2014/01/23 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
Python在Console下显示文本进度条的方法
2016/02/14 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
django 自定义过滤器的实现
2019/02/26 Python
django query模块
2019/04/20 Python
python3 线性回归验证方法
2019/07/09 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
书法培训心得体会
2014/01/05 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
党员转正申请报告
2015/05/15 职场文书
初婚初育证明范本
2015/06/18 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js