原生javascript 改写的tab选项卡
<!--css部分-->
<style>
*{
margin: 0;
padding: 0;
}
ul,li{
list-style: none
}
.tabbox{
width: 600px;
clear: both;
overflow: hidden;
margin: 0 auto;
border: 1px solid #ccc;
}
ul.tabnav{
width: 600px;
height: 30px;
border-bottom: 1px solid #ccc;
}
ul.tabnav li{
width: 198px;
height: 30px;
line-height: 30px;
float: left;
border-right: 1px solid #ccc;
text-align: center;
}
ul.tabnav li.active{
color: red;
}
.tabcontent{
width: 460px;
overflow: hidden;;
padding: 20px;
}
.tabcontent ul li{
float: left;
display: none;
}
.tabcontent ul li.active{
display: block;
}
</style>
<!--HTML 结构-->
<div class="tabbox">
<ul class="tabnav" id="tabnav">
<li class="item active">语文</li>
<li class="item">英语</li>
<li class="item">数学</li>
</ul>
<div class="tabcontent" id="tabcont">
<ul>
<li class="item active">语文内容</li>
<li class="item">英语内容</li>
<li class="item">数学内容</li>
</ul>
</div>
</div>
<!--javascript-->
function SwitchTab(tabbtn,tabcontent){
var tabNav = document.getElementById(tabbtn);
var tabcont = document.getElementById(tabcontent);
this.tabNavLi = tabNav.getElementsByTagName('li');
this.tabcontLi = tabcont.getElementsByTagName("li");
var _this = this; //保存创建出来的变量tabs;
for(var i=0, len=this.tabNavLi.length; i<len; i++){
this.tabNavLi[i].index = i;
this.tabNavLi[i].onclick = function (){
_this.tabshow(this); //这里的this 值得是当前点击的选项
};
}
}
SwitchTab.prototype.tabshow = function(obj){ //这里的obj 是当前被点击按钮的那个对象
for(var i=0, len=this.tabNavLi.length; i<len; i++){
this.tabNavLi[i].className = "";
this.tabcontLi[i].className = "";
}
obj.className = "active";
this.tabcontLi[obj.index].className = "active";
};
window.onload = function(){
var tabs = new SwitchTab("tabnav","tabcont");
};
</script>
//改写成面向对象最重要的是要注意this 指的是谁。 出现以下两种情况this的值应该怎么保存呢?
1. 当面向对象程序中有计时器的时候
function Aaa() {
this.a = 10;
var _this = this;
setInterval(function(){
_this.show(); //如果直接使用this,那么这里的this指向的的是window
},1000);
}
Aaa.prototype.show = function(){
alert(this.a);
};
window.onload = function() {
var aaa = new Aaa();
};
2、当面向对象程序中有事件的时候
function Bbb() {
this.a = 10;
var _this = this;
var btn = document.getElementById("btn");
btn.onclick = function() {
_this.show(); //这里的this指向的是当前对象
};
}
Bbb.prototype.show = function(){
alert(this.a);
};
window.onload = function() {
var bbb = new Bbb();
};
原生javascript 改写的tab选项卡的更多相关文章
- JavaScript插件制作-tab选项卡
JavaScript插件制作练习-鼠标划过选项卡切换图片 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 原生js实现tab选项卡里内嵌图片滚动特效代码
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...
- 原生tab选项卡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 可轮播滚动的Tab选项卡
前段时间有试着搭建个后台主题ui框架,有用到可支持滚动的Tab选项卡,模仿着H+后台主题ui框架中的代码造轮子改造了下,可惜代码在公司,不能把代码外发出来(感觉这样被限制了很多,对于这样的公司没办法, ...
- js基础练习一之tab选项卡
最近在学习前端,当然包括js,css,html什么的,在听课时做的一些小练习,记录下来: 实例一: --Tab选项卡-- <script type="text/javascript&q ...
- tab选项卡-jQuery
上次用原生的js写了个tab选项卡 这次按照一样的思路用jQuery写了一个 ,直接看代码: /*布局*/ <div id="div1"> <input cl ...
- react tab选项卡切换
Tab选项卡切换是个很常见也很简单的小功能,用原生js和jq去写的话可能不到20行代码就搞定so easy.但是用react去实现就没那么容易了(是自己react比较菜).由于最近在重新学习react ...
- 下拉菜单效果和tab选项卡切换
//下拉菜单效果和tab选项卡切换. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 原生javascript写自己的运动库(匀速运动篇)
网上有很多JavaScript的运动库,这里和大家分享一下用原生JavaScript一步一步写一个运动函数的过程,如读者有更好的建议欢迎联系作者帮助优化完善代码.这个运动函数完成后,就可以用这个运动函 ...
随机推荐
- 屏幕分辨率(QQVGA、QVGA、VGA、XGA、WXGA、WUXGA和WSXGA+)
TFT屏幕 TFT ( Thin Film Transistor 薄膜晶体管) ,是有源矩阵类型液晶显示器(AM-LCD)中的一种,TFT在液晶的背部设置特殊光管,能够“主动的”对屏幕上的各个独立的象 ...
- Git使用之基于SSH的Gitserver的client配置(下篇)
1. 软件安装 Git-1.9.2-preview20140411 TortoiseGit-1.8.8.0-64bit.msi 1.1 安装msysgit 很easy,基本就是一路下一步,有几个地方 ...
- CentOS6.3(64位)下安装Oracle11gR2(64)服务器
安装环境 Linux服务器:Centos6.3 64位 Oracle服务器:Oracle11gR2 64位 系统要求 1.Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内 ...
- HashMap的分析(转)
一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap ...
- VS2010中属性页中,C/C++ -->预处理器定义
如上图中,在这里,WIN32._DEBUGE._UNICODE等其实是一些宏定义,在这里写上这些,相当于在本工程所有的文件中都写上了: #define WIN32 #define _DEBUG#def ...
- UltraEdit环境下,php简单环境配置
1.语法高亮 菜单->视图->查看方式->选中“PHP” 2.自动补全 菜单->高级->配置->自动完成->选中“自动显示自动完成对话框”,字符数选择2-3为 ...
- Android-版本与api对应关系图
Code name Version API level Lollipop 5.1 API level 22 Lollipop 5.0 API level 21 KitKat 4.4 - 4.4.4 A ...
- Search 和 Select比较 - 浅谈
Search 语法: public IFeatureCursor Search ( IQueryFilter filter, bool Recycling); Select 语法: pub ...
- ArcGIS Server Manager登陆不了
我很是郁闷,安装都好了(post安装完成之后它要我将 相关的用户(我在这里安装的时候已指定) 添加到 agsadmin和agsusers两个用户组中.都做好了, 我甚至将刚刚的用户和用户组都删掉,重新 ...
- ios中模拟延时的几种方法
- (void)delay1 { // 延迟执行不要用sleep,坏处:卡住当前线程 [NSThread sleepForTimeInterval:3]; NSLog(@&qu ...