簡體   English   中英

JavaScript循環中的暫停

[英]Pausing during a loop in 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++;
    }
}

代替循環,使用window.setInterval()

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

使用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();

交替

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 />';
    };
}

JavaScript執行不能暫停。 您將需要重構此代碼以改為基於計時器來調用函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM