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 相关文章推荐
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
Jun 12 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
微信小程序template模板实例详解
Oct 27 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 Javascript
AJAX实现省市县三级联动效果
Oct 16 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
vue实现微信分享功能
2018/11/28 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
中专生自我鉴定范文
2013/12/19 职场文书
关于期中考试的反思
2014/02/02 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
责任书格式范文
2014/07/28 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
Python OpenCV形态学运算示例详解
2022/04/07 Python