[英]jQuery function doesn't work in a JavaScript for-loop. Please Help
[英]javascript /jquery for loop doesn't work with extremely complicated expression
我有这个javascript:
<script>
$("#P1").on("blur", function(){$("#Y1").val(getClass(this));});
$("#P2").on("blur", function(){$("#Y2").val(getClass(this));});
$("#P3").on("blur", function(){$("#Y3").val(getClass(this));});
$("#P4").on("blur", function(){$("#Y4").val(getClass(this));});
<script>
它是用jquery编写的。 我想在for循环中将其标记化。 我已经尝试了多次语法迭代,但是无法获得一种适用于复杂表达式的语法。
<script>
var i;
for (i = 0; i < 5; i++) {
$("#P" +i).on("blur", function(){$("#Y" +i).val(getClass(this));});
}
</script>
为什么这不起作用?
在for
循环的末尾, i
的值为5,因此每次调用blur
处理程序时,解释器将看到i
的值为5-如果只有#Y1-4,则#Y5不存在。
使用let
代替,它具有块作用域而不是函数作用域,因此每次迭代都有一个独立的i
绑定:
for (let i = 1; i < 5; i++) {
$("#P" + i).on("blur", function(){
$("#Y" + i).val(getClass(this));
});
}
在使用for
循环时,请始终使用let
(如果可以的话,请使用const
),尤其是在涉及异步的情况下。 (实际上,无论如何,都应该在所有可能的地方使用let
或const
,但这for
避免bug尤其重要)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.