8

関数が呼び出される前にタイマーを 5 秒から 0 までカウントダウンしようとしていますが、これは正常に実行できますが、カウントダウン時にタイマー値を表示することはまだできていません。値を表示する代わりに<div></div>、空白スペースから「数値: 0」に移動します。私は両方setTimeoutを使用setIntervalしましたが、同じ結果が得られました。

<script type="text/javascript">
    for (i = 5; i > 0; i--) {
        function countDown() {
            setInterval(function () {
                document.getElementById("displayDiv").innerHTML = "Number: " + i;
            }, 1000);
        }
    }
</script>

私も仕方なく.value代わりに使ってみました.innerHTML

<input type="button" value="Count" onclick="countDown()" />

<div id="displayDiv" />

これは本当に単純なはずですが、私は困惑しています。どんな助けでも大歓迎です

4

2 に答える 2

15
function countDown(i) {
    var int = setInterval(function () {
        document.getElementById("displayDiv").innerHTML = "Number: " + i;
        i-- || clearInterval(int);  //if i is 0, then stop the interval
    }, 1000);
}
countDown(5);

デモ: http://jsfiddle.net/DerekL/sFtqZ/ (追加のコールバック引数が含まれています)

于 2012-06-18T00:55:31.103 に答える
4

試す

<script type="text/javascript">
function countDown() {
var i = 5;
var myinterval = setInterval(function() {
    document.getElementById("displayDiv").innerHTML = "Number: " + i;

    if (i === 0) {
        clearInterval(myInterval);
        //call your function
    }
    else {
        i--;
       }
    }, 1000);
}​
</script>

http://jsfiddle.net/pjSKa/

于 2012-06-18T00:54:44.640 に答える