我是JQuery的新手,但我无法找到为什么if语句在这里工作。你在代码alert(a)
和alert(timesRun)
中看到我把它放在那里,所以我可以测试一下,如果变量确实按照预期计算了,他们确实如此。
现在是问题:var a由userinput决定,当时钟等于timesrun时,应该使时钟停止,但if语句似乎不起作用,即使两个警报都说:var a =12
和var timesrun is 12
即使if语句应该已经停止它,间隔仍然继续。对不起,如果我不清楚或凌乱,我只是在中学,甚至不是母语为英语的人。
< script >
$(document).ready(function () {
$('#turnright1').click(function () {
var a = $("#nummr1").val();
var angle = 0;
var timesRun = 0;
var interval = setInterval(function () {
timesRun += 1;
alert(a);
alert(timesRun);
if (timesRun === a) {
clearInterval(interval);
}
angle += 3.6;
$('img[src^="Images/lockercenter.png"]').rotate(angle);
i++
}, 1000);
});
});
</script>
答案 0 :(得分:2)
问题是$("#nummr1").val();
返回一个字符串,并且您正在检查与===
的严格相等。要解决此问题,请将其更改为
if(timesRun == a){
clearInterval(interval);
}
` 或
if(timesRun === parseInt(a)){ //or +a;
clearInterval(interval);
}
答案 1 :(得分:0)
由于您正在使用===
运算符,因此它还会检查操作数的类型。 timesRun
为Number
,而val()
返回的值为String
。
您可以将运算符更改为==
,也可以先使用parseInt
解析值
答案 2 :(得分:0)
这是因为你在行
中使用三等号(===)if (timesRun === a) {
为了让===工作,你需要确保“timesRun”和“a”都是字符串,或者都是整数,但不是混合。
例如
if (String(timesRun) === String(a)) {
或
if (parseInt(timesRun, 10) === parseInt(a, 10)) {
会奏效。如果没有第二个参数,请不要使用parseInt,否则会有不好的意外。
if (timesRun == a) {
也可以在这里工作,但在Javascript中可以认为双重平等是危险的。