为什么for循环不能让我的愿望成真呢?
Why doesn't the for-loop make my wishes coming true?
好的,很简单…我想做这个(这工作完美,但显然是太多的文字当我把#b到#b20):
$("#b" + 1).click(function () {
$('.c').hide();
$(".a" + 1).show();
});
$("#b" + 2).click(function () {
$('.c').hide();
$(".a" + 1).show();
});
很简单,像这样:
for (var i = 0; i < 50; i += 1) {
$("#b" + i).click(function () {
$('.c').hide();
$(".a" + i).show();
alert('Hey'+i);
});
}
$ (" # b + i) 按钮htmlpage,和 $("。a"+ i"是应该通过单击按钮在页面上查看的文本。//文本是类= " c a1 " , class = " c a2 " ,……;和按钮 id = " # b1 " , id = " # b2 " …但是当我执行代码时(点击#b1, #b2,或…),.c隐藏(如预期的那样),下一步只在I =50时执行(用警告证明)。
任何想法?
在for循环中试试:
for (var i = 0; i < 50; i += 1) {
(function (j) {
$("#b" + j).click(function () {
$('.c').hide();
$(".a" + j).show();
alert('Hey'+j);
});
}(i))
}
实际上,这是一个经典,你应该读更多关于闭包的知识,以及JS是一种"作为值传递"的语言。简单地说:
作为参数发送给click
函数的匿名function
有一个对创建它的环境的引用,因此,有一个对i
变量的引用,对于创建的每个function
都是完全相同的(每次迭代创建一个函数)。因此,每个匿名函数的i
都是循环的最后一个值。
通过使用另一个闭包,您使用JS将参数作为值传递而不是作为引用的事实:j
(即使您称之为i
,正如我之前所述)不是对i
的引用,而是i
在传递给函数时的值。
相关文章:
- 我的javascript for循环不起作用
- 我没有'I don’我不理解for在循环中的用途
- 我的Javascript for循环在1次迭代后停止
- 为什么我的“for”循环只获取 html 中的最后一项
- Javascript:connection.query函数正在破坏我的for循环
- JavaScript-我可以用for循环中修改的属性将新结构推送到数组中吗
- 我的 for 循环有什么问题
- 如何将 Facebook For Unity SDK 与我的 Unity (Javascript) 项目集成
- LearnBoost的Up for Node.js似乎无法正确重新启动我的应用程序
- JavaScript for-loop:如何让我的数字转换器工作
- 调整图像大小以使其完美地适合幻灯片,问题仍然是用 for 循环将 CSS 代码替换为我的图像
- 我的 for 循环中的这些小数从何而来
- 为什么我的函数不是 do for 循环
- CasperJS只从我的for循环中多次发布最后一项
- 我的js for循环在0之后停止
- 为什么我的javascript for循环不起作用
- 为什么for循环不能让我的愿望成真呢?
- 为什么我的javascript for循环将不工作?For (var i=1;i< 5;i++;){文档.write (
- 我怎么能把我的& &;maxDate for coconn &DateTimePicker
- 我的Javascript for循环工作在除了一个子数组以外的所有子数组上