原生js,从面向过程的方法到面向对象的方法,写个选项卡练练手
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js制作一个选项卡</title>
<style type="text/css">
.tab_title span.active {
background:#000;
color: #FFF;
}
.tab_content {
border:1px solid #000;
padding: 20px;
}
.tab_content div {
display: none;
}
.tab_content div.active {
display: block;
}
</style> <script type="text/javascript">
//1.选取到tab选项卡 2.为选项卡添加事件
window.onload = function(){
var arr_tab_span = document.getElementsByTagName('span');
var tab_section = document.getElementById('sec_con');
var arr_tab_div = tab_section.getElementsByTagName('div'); //console.log(arr_tab_span);
//console.log(tab_section);
//console.log(arr_tab_div); for (var i=0; i<arr_tab_span.length;i++) {
arr_tab_span[i].index = i;
arr_tab_span[i].onclick = function(){ //为选项卡点击添加事件
for(var j=0;j<arr_tab_span.length;j++){
arr_tab_span[j].className = '';
arr_tab_div[j].className = '';
}//for结束
this.className = 'active';
arr_tab_div[this.index].className = 'active'; }
}//for结束
}
</script> </head>
<body>
<div style="width: 500px;">
<nav class="tab_title">
<span class="active">语文</span>
<span>数学</span>
<span>娱乐</span>
</nav>
<section class="tab_content" id="sec_con">
<div class="active">
鲁迅是语文课本上的
</div>
<div>
祖冲之是数学课上的
</div>
<div>
孙悟空是娱乐电视里的
</div>
</section>
</div>
</body>
</html>
代码效果如下

现在对JS代码进行改造,添加全局变量,函数不要嵌套,变成了如下,亦可用
<script type="text/javascript">
//1.选取到tab选项卡 2.为选项卡添加事件
var arr_tab_span,
tab_section,
arr_tab_div;
window.onload = function() {
init();
} function init(){
arr_tab_span = document.getElementsByTagName('span');
tab_section = document.getElementById('sec_con');
arr_tab_div = tab_section.getElementsByTagName('div'); for(var i = 0; i < arr_tab_span.length; i++) {
arr_tab_span[i].index = i;
arr_tab_span[i].onclick = change;
} //for结束
} function change() { //为选项卡点击添加事件
for(var j = 0; j < arr_tab_span.length; j++) {
arr_tab_span[j].className = '';
arr_tab_div[j].className = '';
} //for结束
this.className = 'active';
arr_tab_div[this.index].className = 'active';
} </script>
继续改造,js代码变成如下,面向对象的方式,即可成功运行
<script type="text/javascript">
window.onload = function() {
var tab1 = new Tab();
tab1.init();
} function Tab(){
this.arr_tab_span = document.getElementsByTagName('span');
this.tab_section = document.getElementById('sec_con');
this.arr_tab_div = this.tab_section.getElementsByTagName('div');
} Tab.prototype.init = function(){
for(var i = 0; i < this.arr_tab_span.length; i++) {
var _this = this;
this.arr_tab_span[i].index = i;
//this.arr_tab_span[i].index = i;
this.arr_tab_span[i].onclick = function(){
_this.change(this);
}
} //for结束
} Tab.prototype.change = function(obj) {
//console.log(this);
//为选项卡点击添加事件
for(var j = 0; j < this.arr_tab_span.length; j++) {
this.arr_tab_span[j].className = '';
this.arr_tab_div[j].className = '';
} //for结束
obj.className = 'active';
this.arr_tab_div[obj.index].className = 'active';
} </script>
原生js,从面向过程的方法到面向对象的方法,写个选项卡练练手的更多相关文章
- JS是面向过程、面向对象还是基于对象?面向对象的代码体现
一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...
- 使用原生js来控制、修改CSS伪元素的方法总汇, 例如:before和:after
在网页中,如果需要使用辅助性/装饰性的内容的时候,我们不应该直接写在HTML中,这样会影响真正的内容,这就需要使用伪元素了,这是由于css的纯粹语义化是没有意义的.在使用伪元素的时候,会发现js并不真 ...
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...
- 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)
概念 面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想.主要关注“怎么做”,即完成任务的具体细节. 面向对象编程OOP:Object Or ...
- 面向过程 vs 面向对象
从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...
- 原生js实现滚动条
var SimulateScroll = (function(){ var oParent = document.getElementById('wrap-scroll-bar'), oBox = d ...
- <一>面向对象分析之面向对象和面向过程
面向对象 ---->注重的是拆分,组装. ---->封装,继承,多态,复用(只是现象) ---->面向对象变成的目标从来就不是复用.相反,对 ...
- OC - 1.面向过程和面向对象的思想对比
一.面向过程 1> 思想 面向过程是一种以过程为中心的最基础编程思想,不支持面向对象的特性. 面向过程是一种模块化程序设计方法 2> 开发方法 面向过程的开发方法是以过程(也可以说是模块) ...
- PHP面向对象和面向过程
编程界不论是PHP.Python都有这么两种编程思想,oop面向对象.pop面向过程,这两种在功能上没有多大区别,但是在代码编写上却有很大区别.今天就记录一下面向对象和面向过程的优点.缺点.定义.实现 ...
随机推荐
- 【重学计算机】机组D7章:总线
1. 系统总线的特性及应用 总线概念:将计算机系统中各部件连接起来 总线分类:(外部/内部,系统/非系统,串行/并行,同步/异步...) 按用途分类: 存储总线:cpu与存储器 系统总线:连接存储总线 ...
- 知识小罐头04(idea+maven+部署war包到tomcat 下)
上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...
- MIPI DSI之DBI DPI含义和区别(3-1)
一.MIPI MIPI(Mobile Industry Processor Interface/移动工业处理器接口)是2003年由ARM.Nokia.ST 等公司成立联盟并为移动应用处理器制定的一个开 ...
- jquery快速入门(二)
jQuery 效果 1.隐藏,显示 1.1显示 hide() 和隐藏 show() 语法:$(selector).hide(speed,callback); $(selector).show(spee ...
- c#下载文件选择路径控件
<input id="file1" style="width: 240px; height: 20px; display:none;" type=&quo ...
- Java开发笔记(八十二)注解的基本单元——元注解
Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义.前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的: @ ...
- 简说Java线程的那几个启动方式
本文首发于本博客 猫叔的博客,转载请申明出处 前言 并发是一件很美妙的事情,线程的调度与使用会让你除了业务代码外,有新的世界观,无论你是否参与但是这对于你未来的成长帮助很大. 所以,让我们来好好看看在 ...
- DevOps概述
Devops概念 转载自 devops实践-开篇感想 DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和 ...
- Doctype的作用?严格模式与混合模式,如何触发者这两种模式,区分它们有何意义?
Doctype作用?严格模式与混合模式,如何触发者这两种模式,区分它们有何意义? 1.1 Doctype作用 <!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该 ...
- 关于图片适配不同尺寸的image View(实战)
分享人:广州华软 佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切 ...