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表格插件datatables用法总结
Sep 05 Javascript
js实现按钮加背景图片常用方法
Nov 01 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
Nov 12 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 25 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 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缓冲区为你的站点加速
2015/10/10 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
拥抱模块化的JavaScript
2012/03/07 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
详解a++和++a的区别
2017/08/30 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
Vue页面骨架屏的实现方法
2018/05/22 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
Python程序语言快速上手教程
2012/07/18 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
农行实习自我鉴定
2013/09/22 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
上诉状格式
2015/05/23 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
Python 如何安装Selenium
2021/05/06 Python