2014-01-11 77 views
0

我是JQuery的新手,但我無法找到爲什麼if語句在這裏工作。你在代碼alert(a)alert(timesRun)中看到,我把它放在那裏,所以我可以測試,如果這些變量確實按照預期計算出來的話,那麼他們就可以。如果聲明不起作用

現在的問題是:風險價值是由userinput確定,並應使時鐘停止時,它等於timesrun但if語句似乎不連工作時都警告說:var a =12var timesrun is 12區間繼續即使如果聲明應該已經阻止它。對不起,如果我不清楚或混亂我只是在中學,甚至不是英語母語的人。

<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

將接受的答案標記爲幫助您解決此問題,而不是編輯問題並說:「這是固定的。」這樣,其他人也可以看到哪些是幫助你的東西。 – t0mppa

+0

我知道,但stackoverflow沒有讓我呢(不得不等待8分鐘)。也即時新的網站,但我現在得到它。 – Killerstreak

+0

啊,好的。那麼不用擔心。 :)歡迎來到SO! – t0mppa

回答

2

的問題是,$("#nummr1").val();返回一個字符串,而你正在檢查與===嚴格的平等。要解決此問題,由於您使用的===運營商將其更改爲

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

` 或

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

它工作是的!哈哈thx男子5分鐘,我得到了答案。 – Killerstreak

0

,它會檢查該類型的操作數的爲好。 timesRunNumber,而從val()返回的值是String

您可以操作改變爲==或解析使用值parseInt第一

0

那是因爲你是爲了使用三層等於(===)在該行

if (timesRun === a) { 

爲= ==工作,你需要確保「timesRun」和「a」都是字符串,或兩者都是整數,但不是混合。

例如

if (String(timesRun) === String(a)) { 

if (parseInt(timesRun, 10) === parseInt(a, 10)) { 

會工作。如果沒有第二個參數,不要使用parseInt,否則會產生不好的意外。

if (timesRun == a) { 

也可以在這裏工作,但是在Javascript中可以認爲二等分是危險的。