如果声明不起作用

时间:2014-01-11 14:27:24

标签: javascript jquery if-statement

我是JQuery的新手,但我无法找到为什么if语句在这里工作。你在代码alert(a)alert(timesRun)中看到我把它放在那里,所以我可以测试一下,如果变量确实按照预期计算了,他们确实如此。

现在是问题:var a由userinput决定,当时钟等于timesrun时,应该使时钟停止,但if语句似乎不起作用,即使两个警报都说:var a =12var 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>

3 个答案:

答案 0 :(得分:2)

问题是$("#nummr1").val();返回一个字符串,并且您正在检查与===的严格相等。要解决此问题,请将其更改为

if(timesRun == a){
    clearInterval(interval);
}

` 或

if(timesRun === parseInt(a)){ //or +a;
        clearInterval(interval);
}

答案 1 :(得分:0)

由于您正在使用===运算符,因此它还会检查操作数的类型。 timesRunNumber,而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中可以认为双重平等是危险的。