JS学习笔记 - 普通选项卡(面向过程)
疑问:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>普通选项卡</title>
<style>
#div1 input{
background: white;
}
#div1 input.active{
background: yellow;
/* 这里直接给className为active的标签设置颜色, 1. 第一个按钮默认是黄色,所以需要先设置。
2. js只需要先清空所有input的className,再把点击的this按钮 className变成active。
不应该用js设置颜色式样!错误: aBtn[i].style.background-color = yellow;
*/
}
#div1 div{
width: 200px;
height: 200px;
background-color: #ccc;
display: none;
}
</style> <script>
window.onload = function()
{
var oDiv = document.getElementById('div1');
var aBtn = oDiv.getElementsByTagName('input');
var aDiv = oDiv.getElementsByTagName('div'); for(var i=0; i<aBtn.length; i++)
{
aBtn[i].index = i;
//把aBtn的index顺序变成数值,以便于后面aDiv使用 aBtn[i].onclick = function()
{
for(var i=0; i<aBtn.length; i++)
{
aBtn[i].className = ''; // 先清空 所有按钮 和 div 的样式
aDiv[i].style.display = 'none';
}; this.className = 'active'; // 把点击的 这个按钮 类名 变成 ‘active’ aDiv[this.index].style.display = 'block';
// 和按钮序号相对应的div,display变成block // aDiv[this.index] ==> aBtn[i].index = i
// 把aBtn的index顺序变成数值,以便于后面aDiv使用
//疑问,怎么不能直接写 aDiv[i] ?
};
};
};
</script>
</head>
<body>
<div id="div1">
<input class="active" type="button" value="aaa">
<!-- 默认把第一个按钮的class设置为active,即背景色为yellow -->
<input type="button" value="bbb">
<input type="button" value="ccc"> <div style="display: block";>mfdkjgmdkgm</div>
<!-- 默认把第一个div的display设置为block-->
<div>我梦见你梦见我</div>
<div>14597825</div>
</div>
</body>
</html>
错误1:
<script>
window.onload = function ()
{
var aBtn = document.getElementsByTagName('input');
var oDiv = document.getElementById('div1');
var aDiv = oDiv.getElementsByTagName('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 = '';
aDiv[i].style.display = 'none';
}
// aBtn[i].className = '';
// 不是直接在onclick事件里 用 aBtn[i] 给其他所有按钮、div设置样式。
// aBtn[i] 只表示单个,再用一个for循环来处理,才表示全部。 this.className = 'active';
aDiv[this.index].style.display = 'block';
}
}
}
</script>
错误2:
<script>
window.onload = function()
{
var aBtn = document.getElementsByTagName('input'); for(i=0; i<aBtn.length; i++)
{
aBtn[i].onclick = function()
{
//aBtn[i].className = 'active';
this.className = 'active';
// 当前事件作用于 this, 所以给 this 加 className
};
};
};
</script>
JS学习笔记 - 普通选项卡(面向过程)的更多相关文章
- JS学习笔记 - 面向对象 - 选项卡 (普通选项卡改写)
选项卡3 <script> window.onload=function () { new TabSwitch('div1'); }; function TabSwitch(id) // ...
- C#学习笔记——面向对象、面向组件以及类型基础
C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...
- WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)
WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
- JS学习笔记5_DOM
1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...
- [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡
当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...
- WebGL three.js学习笔记 加载外部模型以及Tween.js动画
WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- Mybatis使用注解进行增删改查
// 增public interface StudentMapper{ @Insert("insert into student (stud_id, name, email, addr_id ...
- MD5解密(常用语登录密码加密)
http://pmd5.com/
- Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...
- 【推荐】适合本科生的网络公开课(MOOC为主),不断更新……
题记:身在海大(湛江),是幸运还是不幸,每一个人有自己的定义.人生不能再来一次,唯有把握当下.提高自己,才可能在不能拼爹的年代靠自身实力前行.或许,我们做不了富二代.但我们每一个人.都有机会成为富二代 ...
- Linq复杂对象查询
复杂的查询对象, using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 移动端meta几个值的设置以及含义
<!-- 为移动设备添加 viewport --> <meta name="viewport" content="width=device-width, ...
- mktemp---创建暂存文件
- chage---修改帐号和密码的有效期限
chage命令 chage命令是用来修改帐号和密码的有效期限. 语法 chage [选项] 用户名 选项 -m:密码可更改的最小天数.为零时代表任何时候都可以更改密码. -M:密码保持有效的最大天 ...
- Modbus设备调试工具Winform(包括SRC0001、海康威视、TTS以及各种类型LED的测试)
1.SRC寄存器读写测试 2.采集数据终端模块(这里是康海时代)调试 3.RS485传感器设备调试 4.LED/TTS/海康威视等展示设备调试 5.Modbus等协议规约资料及4-20mA设备调试 以 ...
- 将已有的Eclipse项目转化为Maven项目
将已有的Eclipse项目转化为Maven项目 我们之前在Eclipse IDE完成的Java命令行项目.Java Web项目也使用了构建工具--Ant,它帮助我们编译.运行Java源代码(无需我们自 ...