最近重新从最基础学习JavaScript,如同盖房,先要打好基础,一砖一瓦都很重要。

下面我来嘚吧几句,附上从书上学到的实例与效果。

JS可以用面向过程去写,也可以使用面向对象。面向对象会使一段JS代码更好进行复用,封装与继承。
已下我会写出2种实现tab切换的方法--面向过程与面向对象

面向过程如同你写一篇文章,从头写到尾,不用介绍人物,场景,按照顺序一路写下去即可。

1.tab切换效果图


代码实现:

<!DOCTYPE html>
<html>
<head>
<title>选项卡</title>
<style type="text/css">
input{background: white;}
.active{background: yellow;}
div{width: 200px;height: 200px;background: #ccc;display: none;}
</style>
<script type="text/javascript">
window.onload=function(){
var aBtn=document.getElementsByTagName('input');//getElementByTagName 获取所有的input
var aDiv=document.getElementsByTagName('div');//getElementByTagName 获取所有的div
for(var i=0;i<aBtn.length;i++){ 
aBtn[i].index=i; //记录按钮的索引值,点击了第几个按钮
aBtn[i].onclick=function(){
for (var i = 0;i<aBtn.length;i++) {
aBtn[i].className=""; //for循环设置其他按钮的Class为空
aDiv[i].style.display="none";//for循环设置其他div隐藏
}
// alert('点击了第'+this.index+'个按钮');
this.className="active";//设置当前按钮的Class为active
aDiv[this.index].style.display="block";//设置当前div显示
};
}
}

</script>
</head>
<body>
<input class="active" type="button" value="1"/>
<input type="button" value="2"/>
<input type="button" value="3"/>
<div style="display: block">111</div>
<div>222</div>
<div>333</div>
</body>
</html>

2.面向对象的tab切换

效果图一样,但代码实现会有差别
代码实现:

<!DOCTYPE html>
<html>
<head>
<title>选项卡</title>
<style type="text/css">
input{background: white;}
.active{background: yellow;}
#div1 div{width: 200px;height: 200px;background: #ccc;display: none;}
#div1{display: block;}
</style>
<script type="text/javascript">
// var aBtn=null;
// var aDiv=null;
window.onload=function(){
var oTab=new TabSwitch('div1');//实例化一个对象
}
function TabSwitch(id){
var oDiv=document.getElementById(id);
this.aBtn=oDiv.getElementsByTagName('input');
this.aDiv=oDiv.getElementsByTagName('div');
var _this=this;//用_this存取对象,对象具有标签切换的功能
for(var i=0;i<this.aBtn.length;i++){
this.aBtn[i].index=i;
this.aBtn[i].onclick=function()
{
_this.tab(this);
}; }
};
TabSwitch.prototype.tab=function(oBtn){
for (var i = 0;i<this.aBtn.length;i++) {
this.aBtn[i].className="";
this.aDiv[i].style.display="none"; }
// alert('点击了第'+this.index+'个按钮');
oBtn.className="active";
this.aDiv[oBtn.index].style.display="block";
};
</script>
</head>
<body>
<div id="div1">
<input class="active" type="button" value="1"/>
<input type="button" value="2"/>
<input type="button" value="3"/>
<div style="display: block">111</div>
<div>222</div>
<div>333</div>
</div>
</body>
</html>

面向对象的好处是:如果想多次使用该JS方法,只需要实例化多个对象即可。
var oTab=new TabSwitch('div1');//实例化一个对象

var oTab=new TabSwitch('div2');//实例化一个对象

纯JS制作选项卡--JavaScript实例集锦(初学)的更多相关文章

  1. php+lottery.js制作九宫格抽奖实例

    php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <scrip ...

  2. 使用 原生js 制作插件 (javaScript音乐播放器)

    1.引用页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. 使用原生js实现选项卡功能实例教程

    选项卡是前端常见的基本功能,它是用多个标签页来区分不同内容,通过选择标签快速切换内容.学习本教程之前,读者需要具备html和css技能,同时需要有简单的javascript基础. 先来完成html部分 ...

  4. HTML+纯JS制作音乐播放器

    该篇文章会教你通过JavaScript制作一个简单的音乐播放器.包括播放.暂停.上一曲和下一曲. 阅读本文章你需要对HTML.CSS和Javascript有基本的了解. 话不多说,先上图. emmm. ...

  5. [前端 3]纯Js制作俄罗斯方块游戏

    导读:在别人文章里看到了,然后写了一遍.结果出错了,然后调出来了,然后理解了一下,加了点注释,有一些想法.忘了在 哪一篇上面看的了,就贴不出来链接地址.原谅.呃,真没自己的东西,权当练打字了吧.其实, ...

  6. 纯js制作九宫格

    Demo实现了对任意方格进行拖拽,可以交换位置,其中Demo-1利用了勾股定理判断距离! Demo-1整体思路: 1.首先div实现自由移动,一定需要脱离标准文档流,所以我们给它使用绝对定位. 2.利 ...

  7. 纯js制作遮罩层对话框 -- g皓皓

    //本文支持js在线工具测试.转载请注明出处. <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> < ...

  8. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第3讲(逻辑方法的实现)

    整体展示: 上一讲实现了诸多对象,这次我们就需要实现许多逻辑方法,如控制飞机移动,判断子弹击中敌机,敌机与英雄飞机相撞等等.并且我们在实现这些功能的时候需要计时器去调用这些方法.setInterval ...

  9. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)

    整体展示: 一.全局变量 /*===================玩家参数==========================*/ var myPlane; //英雄对象 var leftbtn = ...

  10. [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

    整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能 ...

随机推荐

  1. Ubuntu一键安装/卸载docker和docker compose,可指定版本或安装最新版本。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @ 目录 前言 一.docker是什么? 二.docker compose是什么? 三.安装步骤 1.Ubuntu安装脚本 2.生成脚 ...

  2. #01背包,容斥,排列组合#洛谷 5615 [MtOI2019]时间跳跃

    题目 分析 不是凸多边形当且仅当边数小于2或者最长边大于等于其余边之和, 那么容斥一下,首先总权值为 \[\sum_{i=1}^nC(n,i)\times i=n\sum_{i=1}^nC(n-1,i ...

  3. 前端使用 Konva 实现可视化设计器(2)

    作为继续创作的动力,继续求 github Star 能超过 50 个(目前惨淡的 0 个),望多多支持. 源码 示例地址 在上一章,实现了"无限画布"."画布移动&quo ...

  4. JDK12的新特性:CompactNumberFormat

    目录 简介 CompactNumberFormat详解 自定义CompactNumberFormat 解析CompactNumber 总结 JDK12的新特性:CompactNumberFormat ...

  5. 您有一份OpenHarmony开发者论坛2023年度总结,请查收~

    2023 年 11 月,OpenHarmony 开发者论坛 1.0 版本正式上线. 感谢各位开发者对 OpenHarmony 的大力支持和热爱,成为 OpenHarmony 开发者论坛的第一批体验用户 ...

  6. 《苏丹的复仇》携手华为HMS生态,实现用户、收入双增长

    中国出海中东和北非地区的策略类手游<苏丹的复仇>(Revenge of Sultans,ROS)和华为HMS生态深度合作,为本地用户带来创新游戏体验,成为当地广受欢迎的游戏之一,下载量居应 ...

  7. java excel关联导入数据格式为一对多

    java excel关联导入数据格式为一对多 java 表格读取时一行一行的读取 将每行数据放入list  根据 list.stream().filter(m->m.getCode().equa ...

  8. locust分布式压测的Step Load及no web模式下的报表自动生成

    Running Locust in Step Load ModeIf you want to monitor your service performance with different user ...

  9. Java学生信息管理系统源码

    学生信息管理系统 功能说明 学生信息管理,包括学生.班级.院系.课程.成绩等的管理. 本程序仅供学习食用. 工程环境 JDK IntelliJ IDEA MySQL 运行说明 1.安装JDK. 2.导 ...

  10. Solon Java 应用开发框架 v2.7.5 发布

    Java Solon 是什么框架? Java "新的"应用开发框架.从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态. 追求: 更快.更小.更简单 提倡: 克制 ...