原生JS 选项卡代码实现
可实现同页面多个选项卡
效果图:
代码实现:
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 选项卡代码实现的更多相关文章
- 原生js一行代码实现简易轮播图
这是一个简易的js无限循环轮播图,只用了一行js代码就实现了无限循环,记录一下三目运算符的伟大! <!DOCTYPE html><html lang="en"&g ...
- 原生js扫雷代码
思路要点: 1. 随机地雷放到一个二维数组中: 2. 每一个格子要统计周围有几颗雷: 3. 每一个格子是否处于打开状态,用于判断是否赢得游戏: 4. 如果点击到周围没有雷的地方,把周围的打开: 具体的 ...
- 原生JS常用代码汇总
数组相关 var codes = new Array( ); //创建数组codes.length //数组长度 动态插入数组 codes.push(value);
- 原生js选项卡
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 原生js简易日历效果实现
这里我们将用原生js实现简易的日历,原理和之前的原生js选项卡差不多,不过也有些区别: 首先html代码: <div class="container"> <di ...
- 抛弃JQ,回归原生js……
之前我写过一篇文章叫做<jq不会被淘汰>--而事实上它真的不会被淘汰,因为即使在mvvm框架盛行的今天,原生js的api越来越友好的今天,jq依然在用户量上是霸主-- 但是今天我们要讨论的 ...
- 原生js瀑布流
HTML部分代码............................... CSS部分代码........................... 原生js部分代码................. ...
- jQuery和原生JS的对比
原生JS的缺点: 不能添加多个入口函数(window.onload),如果添加了多个,后面的会把前面的覆盖掉 原生js的api名字太长,难以书写,不易记住 原生js有的代码冗余 原生js中的属性或者方 ...
- 原生js实现tab选项卡里内嵌图片滚动特效代码
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...
随机推荐
- POJ-2774-Long Long Message(后缀数组-最长公共子串)
题意: 给定两个字符串 A 和 B,求最长公共子串. 分析: 字符串的任何一个子串都是这个字符串的某个后缀的前缀. 求 A 和 B 的最长公共子串等价于求 A 的后缀和 B 的后缀的最长公共前缀的最大 ...
- -_-#【jQuery】data
.data() <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- 嵌入式设备web服务器比较
目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注 现在在嵌入式设备中所使用的 ...
- 【枚举】Vijos P1496 火柴棒等式 (NOIP2008提高组第二题)
题目链接: https://vijos.org/p/1496 题目大意: 给你n(n<24)根火柴棍,你可以拼出多少个形如“A+B=C”的等式?("+"和"=&qu ...
- vijos P1243 生产产品(单调队列+DP)
P1243生产产品 描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产 品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器 ...
- selenium webdriver python 操作IE浏览器
Step1:下载IEDriverServer 下载路径:http://selenium-release.storage.googleapis.com/index.html 我下载的是2.48版本的IE ...
- Java线程面试题 Top 50【转载】
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...
- JavaBean基础
JavaBean的概念 JavaBean是一种可重复使用.且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean:还有一种是没有用户界 ...
- EF 5.0 和 EF4.0 语法区别
// 实现对数据库的添加功能,添加实现EF框架的引用 40 41 public T AddEntity(T entity) 42 43 { 44 45 //EF4.0的写法 添加实体 46 47 // ...
- [AWS S3] Hosting a Static Website on Amazon S3
In this lesson, you will learn how to host a static website on Amazon S3. I will show you how to cre ...