JavaScript for loop的次数太多了
JavaScript for loop goes too many times.
可能的重复项:
循环内的Javascript闭包 - 简单的实际示例
有人可以告诉我为什么这段代码中"i"的值打印出数字 4 吗? 循环只到 3,但它会在menu_feedbackdiv 内打印"i = 4"。
for(i=1; i<=3; i++){
$('#file_button'+i).hover(function (){
$('#menu_feedback').html('i = '+i+'<br/>');
}, function(){
$('#menu_feedback').html('');
});
}
.
<button type="button" id="file_button1">Door 1</button>
<button type="button" id="file_button2">Door 2</button>
<button type="button" id="file_button3">Door 3</button>
<div id="menu_feedback"></div>
欢迎来到闭包的世界。
使用这个:
for(i=1; i<=3; i++) {
(function(i) {
// the code that depends on i
})(i);
}
这是一个经典的 JavaScript 问题。 这是因为hover
函数中的变量i
与循环中的变量相同。 因此,当循环结束时,i
为 4,因此函数中的 4 为 4。
尝试这样的事情:
var hoverFunc = function(i){
return function(){
$('#menu_feedback').html('i = '+i+'<br/>');
};
};
for(i=1; i<=3; i++){
$('#file_button'+i).hover(hoverFunc(i), function(){
$('#menu_feedback').html('');
});
}
hoverFunc
是结束。 它返回一个函数,该函数在 i
的值周围"关闭"。
看看 JavaScript 在循环内闭包 - 简单的实际示例,以获取有关您面临的问题的更多信息。
但是,对于 jQuery 事件处理程序,还有另一种方法可以解决此问题,方法是将索引作为事件数据传递:
for(i=1; i<=3; i++){
$('#file_button'+i).mouseenter({index: i}, function(event){
$('#menu_feedback').html('i = '+ event.data.index + '<br/>');
}).mouseleave(function(){
$('#menu_feedback').html('');
});
}
相关文章:
- 一个html元素的克隆次数太多
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- 使用.slice分页选择了太多项目
- 堆排序实现进行了太多比较
- 如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
- 如何修复“;太多递归”;ReactJS中的错误
- 为什么fs.readFile在windows上花费太多时间
- 如何避免webGL着色器加载给cpu带来太多负载
- node.js 需要太多的 TCP 套接字
- JavaScript循环迭代太多
- 函数崩溃,因为太多迭代jQuery
- 为什么不'当用户输入空格或字符太多/不够时,此函数会发出window.alert
- Angularjs:为什么重复做太多的工作
- Node.js错误:参数太多上传批量数据时出错
- ng重复调用控制器功能的次数太多
- 我正在验证一个联系人表单.我是不是过滤太多了
- Jquery-append函数花费了太多时间
- 为什么首先单击文档空白处的任何位置启动代码,而不是单击超链接,以及为什么打开了太多选项卡
- Facebook点赞按钮点赞太多了
- JavaScript for loop的次数太多了