可实现同页面多个选项卡

效果图:

代码实现:

HTML部分

 <div class="main" id="tabs">
<div class="tabDiv">
<a href="javascript:;" class="on">选项一</a>
<a href="javascript:;">选项二</a>
<a href="javascript:;">选项三</a>
</div>
<div class="con">
1111111111111111111111111
</div>
<div class="con">
2222222222222222222222222
</div>
<div class="con">
3333333333333333333333333
</div>
</div> <div class="main" id="tabs1">
<div class="tabDiv">
<a href="javascript:;" class="on">选项一</a>
<a href="javascript:;">选项二</a>
<a href="javascript:;">选项三</a>
</div>
<div class="con">
1111111111111111111111111
</div>
<div class="con">
2222222222222222222222222
</div>
<div class="con">
3333333333333333333333333
</div>
</div>

JS部分

fnTab("tabs");
fnTab("tabs1"); function fnTab(id){
var parentEle = document.getElementById(id);
var tabTools = getByClass(parentEle,"tabDiv")[0].getElementsByTagName("a");
var conArr = getByClass(parentEle,"con");
conArr[0].className += " active";
for(var i=0;i<tabTools.length;i++){
(function(i){
tabTools[i].onclick = function(){
for(var j=0;j<conArr.length;j++){
removeClass(tabTools[j],"on");
removeClass(conArr[j],"active");
}
addClass(tabTools[i],"on");
addClass(conArr[i],"active");
}
})(i); } } function getByClass(oParentEle,sClass){
if(oParentEle.getElementsByClassName){
var oEles = oParentEle.getElementsByClassName(sClass);
return oEles;
}else{
var oEles = oParentEle.getElementsByTagName("*");
var aRes = [];
for(var i=0;i<oEles.length;i++){
if(oEles[i].className == sClass){
aRes.push(oEles[i]);
}
}
return aRes;
} }
function addClass(ele,className){
if(ele && ele.nodeType == 1){
var reg = new RegExp("\\b"+className +"\\b","g");
if(!reg.test(ele.className)){
ele.className += " "+className;
}
} }
function removeClass(ele,className){
if(ele && ele.nodeType == 1){
var reg = new RegExp("\\b"+className +"\\b","g");
if(reg.test(ele.className)){
ele.className = ele.className.replace(reg,"");
}
} }

原生JS 选项卡代码实现的更多相关文章

  1. 原生js一行代码实现简易轮播图

    这是一个简易的js无限循环轮播图,只用了一行js代码就实现了无限循环,记录一下三目运算符的伟大! <!DOCTYPE html><html lang="en"&g ...

  2. 原生js扫雷代码

    思路要点: 1. 随机地雷放到一个二维数组中: 2. 每一个格子要统计周围有几颗雷: 3. 每一个格子是否处于打开状态,用于判断是否赢得游戏: 4. 如果点击到周围没有雷的地方,把周围的打开: 具体的 ...

  3. 原生JS常用代码汇总

    数组相关 var codes = new Array( ); //创建数组codes.length //数组长度 动态插入数组 codes.push(value);

  4. 原生js选项卡

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 原生js简易日历效果实现

    这里我们将用原生js实现简易的日历,原理和之前的原生js选项卡差不多,不过也有些区别: 首先html代码: <div class="container"> <di ...

  6. 抛弃JQ,回归原生js……

    之前我写过一篇文章叫做<jq不会被淘汰>--而事实上它真的不会被淘汰,因为即使在mvvm框架盛行的今天,原生js的api越来越友好的今天,jq依然在用户量上是霸主-- 但是今天我们要讨论的 ...

  7. 原生js瀑布流

    HTML部分代码............................... CSS部分代码........................... 原生js部分代码................. ...

  8. jQuery和原生JS的对比

    原生JS的缺点: 不能添加多个入口函数(window.onload),如果添加了多个,后面的会把前面的覆盖掉 原生js的api名字太长,难以书写,不易记住 原生js有的代码冗余 原生js中的属性或者方 ...

  9. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

随机推荐

  1. 数据结构(Splay平衡树): [NOI2007] 项链工厂

    [NOI2007] 项链工厂 ★★★   输入文件:necklace.in   输出文件:necklace.out   简单对比 时间限制:4 s   内存限制:512 MB [问题描述] T公司是一 ...

  2. poj3186 Treats for the Cows

    http://poj.org/problem?id=3186 Treats for the Cows Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  3. Android安全bug ANDROID-8219321

    ANDROID-8219321漏洞主要源自Android ZipFile函数漏洞:没有进行校验重名entry逻辑漏洞,逻辑漏洞细节详见Google+文章和Bluebox Security提报Andro ...

  4. HDOJ 1215 七夕节

    Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...

  5. vijos1891 学姐的逛街计划(线性规划)

    P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...

  6. baidu面试题

    百度:http://blog.chinaunix.net/uid-26602509-id-3306451.html http://lvwenwen.iteye.com/blog/1504379

  7. POJ 1417 True Liars

    题意:有两种人,一种人只会说真话,另一种人只会说假话.只会说真话的人有p1个,另一种人有p2个.给出m个指令,每个指令为a b yes/no,意思是,如果为yes,a说b是只说真话的人,如果为no,a ...

  8. C语言学习_从VC++6.0开始

    前言: C语言是一门博大精深的语言,C语言往往是程序员以及所有软件行业从业者的第一门编程语言. 编程环境: 对于初学者来说,我一开始学习C语言,其实是用的turboc 2.0版本,这个很有历史感,但是 ...

  9. linux —— ubuntu 初次安装问题

    本文收集了我自己安装ubuntu系统时的一些想法和遇到的一些问题,以及一些我自己感兴趣的软件的安装方法等 1. 50G ubuntu 分区方案 <plan> <key> / & ...

  10. 约瑟夫问题(Josephus Problem)的两种快速递归算法

    博文链接:http://haoyuanliu.github.io/2016/04/18/Josephus/ 对,我是来骗访问量的!O(∩_∩)O~~ 约瑟夫问题(Josephus Problem)也称 ...