2013-08-17 17 views
0

我有一段JavaScript代碼:Javascript,setInterval在while循環之後開始?如何讓它在while循環內啓動?

<script> 
    var i=1; 
    while(i<10){ 
    setInterval(function(){ 
     alert(i); 
    },1); 
    i++; 
    } 
</script> 

它提醒10號,而不是數字1到10。我希望setInterval提醒數爲1〜10和1保持警惕10

+0

我幾乎肯定你希望那是'setTimeout'。該循環每毫秒創建十個警報! –

+0

@Grim ... - 沒錯,我沒有注意到並嘗試了一個小提琴,結果..... .....等待它.....它永不停止,無法關閉瀏覽器窗口。 – adeneo

+0

@Blam - 當然他們會這麼做,我的瀏覽器沒有崩潰,我只是表示它幾乎是無盡的警報隊列。 – adeneo

回答

0

這是一個猜測,但是這是你想要的嗎?

setInterval(function(){ 
    var i=1; 
    while(i<=10){ 
    alert(i); 
    i++; 
    } 
},1); 
+0

是的,這正是我想要的。謝謝你,你是最棒的。 –

0

是什麼發生的是你要求計算機每毫秒運行一次嵌套的內部函數。而且你要求連續做十次,所以計算機最終應該每秒發送一次精確的警報一萬次。我很驚訝它不消耗所有的CPU,並消耗所有的內存,並導致一個致命的錯誤。

這會持續到您撥打clearInterval(),或者直到窗口關閉。

http://www.w3schools.com/jsref/met_win_setinterval.asp

+0

我如何讓它從1到10提醒並繼續從頭再來一遍?謝謝 –

+0

對於後續問題,請在雅虎問題上發佈您的問題。 –

1

魔術詞語是關閉和範圍:

<script> 
    var i=1; 
    while(i<10){ 
     (function(j) { 
      setTimeout(function(){ 
       alert(j); 
      },1); 
     })(i); 

     i++; 
    } 
</script> 

總之,while循環的i值可被警告之前完成。
也不是爲了,或缺乏在小提琴上:

FIDDLE