jquery中的一个简单混淆
但是单击任何按钮时的值总是27,为什么?当jquery中的一个简单混淆,jquery,loops,Jquery,Loops,但是单击任何按钮时的值总是27,为什么?当单击处理程序执行时,循环早已完成,并且m被分配了27的值-循环在该值上终止 $("#letter1").attr('value', m); for(var m=1;m在执行单击处理程序时,循环早已完成,m被赋值为27-循环终止 $("#letter1").attr('value', m); 用于(var m=1;m你的循环每次运行26次,每次递增m,因此m最终为27。也许你想要的是将一个不同的var设置为1,然后使用它,你的循环每次递增m运行26次,
单击
处理程序执行时,循环早已完成,并且m
被分配了27的值-循环在该值上终止
$("#letter1").attr('value', m);
for(var m=1;m在执行单击
处理程序时,循环早已完成,m
被赋值为27-循环终止
$("#letter1").attr('value', m);
用于(var m=1;m你的循环每次运行26次,每次递增m,因此m最终为27。也许你想要的是将一个不同的var设置为1,然后使用它,你的循环每次递增m运行26次,因此m最终为27。也许你想要的是将一个不同的var设置为1,然后使用它,原因是正确的(当处理程序执行时,m
已经是27
),但我建议一个不同的解决方案
如果我们使用一个不同的变量,该变量不会随循环而改变,那么您将获得预期的行为。由于JavaScript具有函数作用域,因此最简单的方法是使用一个函数:
for(var m=1;m<=26;m++)
{
$("#letter"+m).attr("valueOfM", m);
$("#letter"+m).click(function() {
$("#letter1").attr('value', $(this).attr("valueOfM"));
j = 0;
setValue(this.value, length);
changeImage("#img");
});
}
函数attachHandler(m){
//因为它是一个参数,所以这里的m最初会取
//m在外部,但它不是同一个变量,所以它不会随着
//外部环境发生了变化。
$(“#字母”+m)。单击(函数(){
美元(“#字母1”).attr('value',m);
j=0;
设置值(此值为长度);
更改图像(“img”);
});
}
对于(var m=1;m)来说,其原因是正确的(当处理程序执行时,m
早已是27
),但我建议一种不同的解决方案
如果我们使用一个不同的变量,该变量不会随循环而改变,那么您将获得预期的行为。由于JavaScript具有函数作用域,因此最简单的方法是使用一个函数:
for(var m=1;m<=26;m++)
{
$("#letter"+m).attr("valueOfM", m);
$("#letter"+m).click(function() {
$("#letter1").attr('value', $(this).attr("valueOfM"));
j = 0;
setValue(this.value, length);
changeImage("#img");
});
}
函数attachHandler(m){
//因为它是一个参数,所以这里的m最初会取
//m在外部,但它不是同一个变量,所以它不会随着
//外部环境发生了变化。
$(“#字母”+m)。单击(函数(){
美元(“#字母1”).attr('value',m);
j=0;
设置值(此值为长度);
更改图像(“img”);
});
}
对于(var m=1;moh,我明白了,那么可能是什么溶液?哦,我明白了,那么可能是什么溶液?哦,我明白了,那么可能是什么溶液?哦,我明白了,那么可能是什么溶液?
for(var m = 1; m <= 26; m++) {
(function(m) {
$("#letter"+m).click(function() {
$("#letter1").attr('value', m);
j = 0;
setValue(this.value, length);
changeImage("#img");
});
})(m);
}