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实现的超出屏幕时把固定层变为定位层的代码
Feb 23 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 Javascript
避免回车键导致的页面无意义刷新的解决方法
Apr 12 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 Javascript
node.js中的fs.lchown方法使用说明
Dec 16 Javascript
javascript中定义类的方法汇总
Dec 28 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
vue.js实现插入数值与表达式的方法分析
Jul 06 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
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获取http请求的头信息实现步骤
2012/12/16 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
为什么要使用servlet
2016/01/17 面试题
单位单身证明样本
2014/10/11 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript