在数组中迭代时的JS循环位置
JS loop position while iterating through an array
可能重复:
循环中的Javascript闭包-简单实用的示例
我想在遍历列表项数组时输出数组中的悬停位置。然而,我的逻辑是完全错误的,因为"i"总是在循环完成时设置为数组的长度,所以我总是得到数组长度值,而不是数组中所需的位置。
我需要获得包含相应列表项目编号的警报。
HTML
<ul>
<li class='listItem'>listitem1</li>
<li class='listItem'>listitem2</li>
<li class='listItem'>listitem3</li>
</ul>
JS
var arr = document.getElementsByClassName('listItem');
for (var i = 0; i < arr.length; i++) {
arr[i].onmouseover = function() {
alert(i);
}
}
http://jsfiddle.net/EHcDp/4/
提前感谢!
var arr = document.getElementsByClassName('listItem');
for (var i = 0; i < arr.length; i++) {
(function(i) {
arr[i].onmouseover = function() {
alert(i);
}
}(i));
}
阅读此副本,了解其工作原理。
您需要一个闭包:
var arr = document.getElementsByClassName('listItem');
for (var i = 0; i < arr.length; i++) {
arr[i].onmouseover = (function(x) {
return function() {
alert(x);
};
}(i));
}
相关文章:
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- js循环遍历单击的元素子节点
- 在数组中迭代时的JS循环位置
- js-循环遍历数据库中的切片字符串和检查项
- Vide.js循环播放多个视频
- 带有foo.js和foo.js.coffee(空)的Rails资产管道导致js循环.为什么?
- 使用 svg.js 循环动画
- JS循环图像文件夹,预加载它们并分配给数组
- 为什么我的 JS 循环会覆盖对象中以前的条目
- 节点.js循环中的异步函数
- Moltin Cart,Laravel和Angular JS——循环通过JS对象
- 车把.js循环中的助手 #each 返回相同的结果
- Angular JS 循环遍历控制器中的多维数组
- JS循环不产生任何结果
- 使用velocity.js循环动画
- 如何将html放入js循环中
- 如何使用Knockout JS循环等运行常规/普通JavaScript代码
- jQuery/Js 循环使用 Codeigniter MySQL 输出数据
- JS循环迭代,但未传递值
- 当JS循环结束时,jQuery hide()