2014-03-03 197 views
1

我想知道如何讓循環每秒暫停一次,然後繼續計算「糖果」的數量。JavaScript中的循環暫停

編輯:我想暫停一下,以便每秒鐘糖果數量增加1.當前顯示開始顯示1到10.我試圖複製在這裏完成的效果(我很新給JavaScript):http://candies.aniwey.net/

//booleans 
var count = new Boolean; 
count = true; 
//integers 
var candy = 0; 

//strings 
var txt = "You have "; 
var txt1 = " candies."; 
var br = "<br>"; 


//loops 
while (candy <= 10) { 
    if (candy == 0) { 
     document.write(txt + candy + txt1); 
     document.write(br); 
     candy++; 
    } else if (candy == 1) { 
     document.write(txt + candy + " candy."); 
     document.write(br); 
     candy++; 
    } else { 
     document.write(txt + candy + txt1); 
     document.write(br); 
     candy++; 
    } 
} 
+0

你看着用[的setInterval(https://developer.mozilla.org/en-US /docs/Web/API/Window.setInterval)? – tkone

+0

你爲什麼要暫停? – Huangism

回答

1

取而代之的是循環的,使用window.setInterval()

var candy = 0; 
window.setInterval(function() { 
    document.write("You have " + ++candy + " candy.<br/>"); 
}, 1000); 
+0

這似乎沒有工作。它不會增加1,只是顯示我的文字。 – Fuzzyketchup

+0

它似乎很適合我 - 看[這個小提琴](http://jsfiddle.net/Lz5Lg/)。 –

+0

啊!無視這一點,我明白現在發生了什麼。希望我應該能夠實現這一點! – Fuzzyketchup

-1

JavaScript執行,不能暫停。您需要重構此代碼才能調用基於計時器的函數。

順便說一句 - 永遠不會永遠不會使用document.write。使用DOM方法,如.innerHTML。

+0

謝謝你的幫助。你能否指導我如何正確使用DOM方法的指導方向? – Fuzzyketchup

0

使用setTimeout調用一個函數(jsfiddle

var candy = 0; 
function moreCandy() { 
    document.getElementById('textHere').innerHTML += 'You have ' + candy + 
     (candy == 1 ? ' candy' : ' candies') + '<br />'; 
    candy++; 
    if (candy <= 10) { 
     setTimeout(moreCandy, 1000); 
    } 
} 
moreCandy(); 

alternatively

for (var i = 0; i <= 10; i++) { 
    setTimeout(getCandy(i), i * 1000); 
} 

function getCandy(amount) { 
    return function() { 
     document.getElementById('textHere').innerHTML += 
      'You have ' + amount + 
      (amount == 1 ? ' candy' : ' candies') + '<br />'; 
    }; 
}