<!--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选项卡的更多相关文章

  1. JavaScript插件制作-tab选项卡

    JavaScript插件制作练习-鼠标划过选项卡切换图片 <!DOCTYPE html> <html> <head> <meta charset=" ...

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

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

  3. 原生tab选项卡

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 可轮播滚动的Tab选项卡

    前段时间有试着搭建个后台主题ui框架,有用到可支持滚动的Tab选项卡,模仿着H+后台主题ui框架中的代码造轮子改造了下,可惜代码在公司,不能把代码外发出来(感觉这样被限制了很多,对于这样的公司没办法, ...

  5. js基础练习一之tab选项卡

    最近在学习前端,当然包括js,css,html什么的,在听课时做的一些小练习,记录下来: 实例一: --Tab选项卡-- <script type="text/javascript&q ...

  6. tab选项卡-jQuery

    上次用原生的js写了个tab选项卡   这次按照一样的思路用jQuery写了一个 ,直接看代码: /*布局*/ <div id="div1"> <input cl ...

  7. react tab选项卡切换

    Tab选项卡切换是个很常见也很简单的小功能,用原生js和jq去写的话可能不到20行代码就搞定so easy.但是用react去实现就没那么容易了(是自己react比较菜).由于最近在重新学习react ...

  8. 下拉菜单效果和tab选项卡切换

    //下拉菜单效果和tab选项卡切换. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  9. 原生javascript写自己的运动库(匀速运动篇)

    网上有很多JavaScript的运动库,这里和大家分享一下用原生JavaScript一步一步写一个运动函数的过程,如读者有更好的建议欢迎联系作者帮助优化完善代码.这个运动函数完成后,就可以用这个运动函 ...

随机推荐

  1. CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)

    小学生放假了 总时限 26s 内存限制 256MB 出题人 zsyzzsoft 提交情况 16/150 初始分值 1500 锁定情况 背景 我们能见到的最可怕的事情,莫过于小学生放假了! 描述 小学生 ...

  2. 第三章 Android绘图机制与处理技巧

    1.屏幕尺寸信息 屏幕大小:屏幕对角线长度,单位“寸”:分辨率:手机屏幕像素点个数,例如720x1280分辨率:PPI(Pixels Per Inch):即DPI(Dots Per Inch),它是对 ...

  3. XAML 名称范围 (x:) 语言特性

    本节介绍为 Windows 运行时实现的 XAML 语言特性的参考信息. 本部分内容 主题 描述 x:Class 属性 配置 XAML 编译,在标记和代码隐藏之间连接分部类.代码分部类在一个独立的代码 ...

  4. GridView格式化数据DataFormatString

    设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货币的格式取决于当前Thread中Cultur ...

  5. lnmp架构下php安全配置分享

    目录[-] 1. 使用open_basedir限制虚拟主机跨目录访问 2. 禁用不安全PHP函数 3. 关注软件安全资讯 4. php用户只读 5. 关闭php错误日志 6. php上传分离 7. 关 ...

  6. Android系统中长按事件的实现机制解析

    在Android的触摸消息中,已经实现了三种监测,它们分别是 1)pre-pressed:对应的语义是用户轻触(tap)了屏幕 2)pressed:对应的语义是用户点击(press)了屏幕 3)lon ...

  7. 在同个类中non-const插入const来减少重复

    class A { private: std::string a; public: A(std::string b) :a(b){} const char& operator[](int b) ...

  8. 类 this指针 const成员函数

    C++ Primer 第07章 类 7.1.2 ​Sales_data类的定义如下: #ifndef SALES_DATA_H #define SALES_DATA_H #include <st ...

  9. 使用 c# 调用进程相关开发

    最近在维护公司的以前项目中发现,使用到了进程相关知识.现在将此总结,以备后面查看复习. 一.进程查看器     程序在运行的时候,操作系统就会为其分配一个进程.那么进程到底是什么东西呢? 实际上,进程 ...

  10. Zepto源码笔记(三)

    ps:本文中"组装成成数组"指的是若元素个数大于1则返回数组,若元素只有1个则返回元素本身 以下函数是$.fn该对象的方法 ready(callback) 通过readyRE正则表 ...