疑问:

1. getElementsByTagName 和 getElementsByClassName  的区别? 分别在什么应用场景? 
 
<!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学习笔记 - 普通选项卡(面向过程)的更多相关文章

  1. JS学习笔记 - 面向对象 - 选项卡 (普通选项卡改写)

    选项卡3 <script> window.onload=function () { new TabSwitch('div1'); }; function TabSwitch(id) // ...

  2. C#学习笔记——面向对象、面向组件以及类型基础

    C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...

  3. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  4. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

  5. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  6. JS学习笔记5_DOM

    1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...

  7. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  8. WebGL three.js学习笔记 加载外部模型以及Tween.js动画

    WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. HDU——T 3072 Intelligence System

    http://acm.hdu.edu.cn/showproblem.php?pid=3072 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  2. 洛谷—— P1086 花生采摘

    https://www.luogu.org/problem/show?pid=1086#sub 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着 ...

  3. 洛谷 P2614 计算器弹琴

    P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...

  4. FragmentTransaction的commit和commitAllowingStateLoss的差别

    1.什么是FragmentTransaction? 使用Fragment时.能够通过用户交互来运行一些动作.比方添加.移除.替换等. 全部这些改变构成一个集合,这个集合被叫做一个transaction ...

  5. 淘宝在hbase中的应用和优化

    本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...

  6. C++ 递归位置排列算法及其应用

    废话不多说,我们先看一下位置排序的算法: #include <iostream> using namespace std; int n = 0; int m = 2; int l = 0; ...

  7. 强悍的 vim —— 删除空行、删除注释以及加注释解注释

    强悍的 vim -- 删除空行.删除注释以及加注释解注释 原文 https://blog.csdn.net/lanchunhui/article/details/51588198 1. 删除空行空行的 ...

  8. 智课雅思词汇---二、词根acu和acr

    智课雅思词汇---二.词根acu和acr 一.总结 一句话总结:acu和acr:sharp锋利的,敏捷的: acuteacutelyacuity sharp锋利的,敏捷的 1.词根acr表示什么意思? ...

  9. 如何实现对网站页面访问量的统计(javaweb和php)

    如何实现对网站页面访问量的统计(javaweb和php) 一.总结 一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了. 1.javaweb中 ...

  10. Linux下安装zip解压功能

    liunx服务器上默认没有安装zip命令,所以使用时需安装:apt-get install zip 或  yum install zip linux安装unzip命令:apt-get install ...