JavaScript for loop只给出元素的数量
javascript for loop only give the number of elements
我有一个包含 3 个链接的列表,我想遍历这些链接,所以每个链接都可以做一些事情。但是当我使用 for 循环时,它只在控制台中给我3
,即列表中的链接数。我想在控制台上像这样显示它们中的每一个:0, 1, 2
;
另外,如何获取每个链接的索引位置?
请参阅此处的代码:http://jsfiddle.net/c8Wdj/
请不要使用jQuery或任何库...
JavaScript:
(function(){
var triggers = document.getElementById('some-list').getElementsByTagName('a');
for (var i = 0, max = triggers.length; i < max; i += 1) {
triggers[i].addEventListener('mouseenter', function(e) {
console.log(i);
}, false);
}
}());
.HTML:
<ul id="some-list">
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
for 没有作用域,所以当你控制台.log(i) 时,它使用的是 i 的最新值。
for (var i = 0, max = triggers.length; i < max; i += 1) {
(function(num){
triggers[i].addEventListener('mouseenter', function(e) {
console.log(num);
}, false);
})(i);
}
一种常见的方法是在循环的每次迭代中创建新的变量作用域,方法是调用函数,将i
传递到该函数中,然后返回引用该值的函数。
但是,如果您只需要引用一些轻量级数据(如数字),另一种方法是简单地在元素上放置 expando 属性。
for (var i = 0, max = triggers.length; i < max; i += 1) {
triggers[i].__i__ = i;
triggers[i].addEventListener('mouseenter', function(e) {
console.log(this.__i__);
}, false);
}
这不需要嵌套变量范围的开销。
演示:http://jsfiddle.net/c8Wdj/5/
可能是IE6的问题(我不记得了),但这并不重要,因为您希望不再支持其JS环境。 :)
相关文章:
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- 隐藏具有特定类$.each、for等的元素的有效方法
- 如何使用 for 循环 jquery 将相应的值附加到相应的 dom 元素
- 使用 for 循环用逗号分隔的值填充选择元素
- 循环遍历 DOM 元素时,是否有 for 循环的替代方法
- 如何使用javascript中的for循环成对检索数组元素
- 是否可以使用Angular2将自定义字符串轻松绑定到html元素中的id和for
- if数组元素在for循环内部有条件
- 使用for cicle在javascript中克隆html元素
- 使用for.of迭代时删除集合中的元素是否安全
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- For 循环成功地将元素添加到数组中,但在之后返回空数组
- 在 for 循环内分组并根据样式属性修改 span 元素
- 使用 jQuery 将事件绑定到具有 for 循环的多个元素
- for 循环元素的执行时间比内部 AJAX 调用可以响应的要快
- 如何更改 javascript for 循环中每个附加 innerHTML 元素的 css
- 如何更改 for-of 循环中的元素
- 如何使用 jQuery 在标签的 for 属性中使用子字符串获取标签元素的值
- 如何使用多个数组元素'for'在JQuery