2013-12-16 153 views
0

我正在一個textarea內部的字符串,通過分隔符「===== \ n」將它分割成一個數組,然後打印出該數組的每個索引textarea每250毫秒。問題是,每次點擊啓動所有這些的按鈕時,網頁似乎都處於凍結狀態。setInterval在文本區域設置文本

我對JS非常陌生,並會感謝任何建議/幫助。

這是我試過的。

方法由setInterval的調用:(theStage是textarea的)

function start(){ 
var frames = theStage.value.split("=====\n"); 
    while(true){ 
     for(var i = 0; i < frames.length; i++){ 
      theStage.value = frames[i]; 
     } 
    } 
} 

定時器:

function changeFrame(){ 
    var time = setInterval(start, 250); 
} 
+3

你不需要'而(真)'...您的setInterval都會想起你的功能。 嘗試在沒有while循環的情況下運行它。 – saada

+0

如果你有時間,我可以問你另外一個問題,我更想用這段代碼尋找的是讓它以250ms的間隔在它們之間打印出數組的每個索引......,如同幀[0]。 ..等待250毫秒...幀[1] ...等待250毫秒....它看起來像它立即衝到最後。我究竟做錯了什麼? – Corjava

+0

我再次更新了我的答案! – saada

回答

1

你不需要while(true) ...您的setInterval將召回功能您。嘗試在沒有while循環的情況下運行它。

UPDATE:

根據您上述的評論,你想轉到步驟數組每個250ms了。 爲了達到這個目的,你想使用setTimeout來代替!

方法如下:

function start(){ 

    var frames = theStage.value.split("=====\n"); 
    var i = 0, l = frames.length; 
    (function iterator() { 
     theStage.value = frames[i]; 

     if(++i<l) { 
      setTimeout(iterator, 250); 
     } 
    })(); 
}; 

start(); 
+0

謝謝你的迴應。它工作得很好! – Corjava