用于带有事件的循环
For loop with events
我正在使用一个在线教程,并试图理解下面的代码。我不明白的是为什么这种方法能用两次以上。当循环已经执行了两次i == len
并且条件i < len
不再为真时。那么,为什么可以将不同的类切换两次以上呢?
我的猜测是,当条件为false时,i
再次被设置为0
,我理解正确吗?希望有人能帮我,我在网上找不到关于这个问题的解释。
HTML
<button>Normal</button>
<button>Changed</button>
CSS
.normal {background-color: white;color:black;}
.changed {background-color: black;color:white;}
JavaScript
(function() {
var buttons = document.getElementsByTagName("button");
for (var i = 0, len = buttons.length; i < len; i +=1)
buttons[i].onclick = function() {
var className = this.innerHTML.toLowerCase();
document.body.className = className;
}}
}());
for
循环只执行一次,并遍历所有按钮。在for
循环体中,为每个按钮定义一个onclick
函数。
因此,在你可以点击循环已经完成的任何地方,并为每个按钮添加一个onclick
函数(每次都会调用)之前,你点击该按钮。
使用button[i].onclick = function() {...}
,您可以向按钮单击事件添加一个事件处理程序函数。
您应该阅读更多关于事件处理程序的内容。
相关文章:
- 如何在for循环中添加事件侦听器
- 注册OpenLayers事件时,即使使用匿名函数或绑定,JavaScript关闭也会触发循环内的所有内容
- 在循环中附加事件处理程序时出现浏览器性能问题
- 如何使用for循环添加所有按钮'单击事件
- 事件循环、回调队列和 Javascript 的单线程是如何连接的
- JavaScript运行时事件循环现有技术
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- jQuery触发器事件在一个循环中多次出现
- 单击中每个循环的事件多次激发
- 使用javascript点击事件的循环引用
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 基于事件在循环中隐藏元素
- 关于动态元素中循环中的事件
- 页面卸载期间的JavaScript事件循环
- 当从jquery的点击事件中的每个循环创建的数组到它之外时,它显示空白数组
- Node.js阻止事件循环
- 循环(事件)中的闭包问题
- 在FullCalendar插件上创建一个循环事件
- Jquery对话框循环事件
- 如何使用angular引导日历为循环事件提供dtStart和until