2017-05-13 3 views
-3

私は単純な変数を使って、JavaScriptのカウントダウンをしたい、ループのためにタイムアウトを設定します。タイムアウトのループはうまくいかず、奇妙な数字を返します

forループの更新をリアルタイムで(毎秒)実行しようとすると、ウェブページで-1が表示されます。

//HTML PART 

<p id=timer>0</p> 


//JS PART 
var timer = 10; 
var text = ""; 

function f() { 
    for (timer; timer > 0; timer--) { 
    text += timer + "<br>"; 
    } 
    timer--; 
    if(timer > 0){ 
     setTimeout(f, 1000); 
    } 
} 
f(); 

document.getElementById("timer").innerHTML = timer; 

エラーを説明し、私は愚かなミスをやっている場合は、値を毎秒を変更することにより、10から0までのタイマー値を表示するように

+0

あなたは 'for'ループで何をしようとしていますか? 'timer'を' 0'にし、 'timer-;'を '-1'にします。 – 4castle

+0

okとしてから、タイミングのないforループを作成します。 –

+0

@ 4castle私はタイマーを作っています... –

答えて

2

が見えるしてください。もしそうなら、あなたは次のようにすることができます:
1.このようなタイマーの周りに引用符を入れてHTMLを修正する必要があります<p id="timer">0</p>
2.私はコメントしたようにforループを削除する必要があります。
3. document.getElementById("timer").innerHTML = timer;を関数f()内に移動します。

var timer = 10; 
 
//var text = ""; 
 

 
function f() { 
 
    //for (timer; timer > 0; timer--) { 
 
    // text += timer + "<br>"; 
 
    //} 
 
    document.getElementById("timer").innerHTML = timer; 
 
    timer--; 
 
    if (timer >=0) { 
 
    setTimeout(f, 1000); 
 
    } 
 
} 
 
f();
<p id="timer">0</p>

+0

ありがとう、ありがとう!しかし、あなたは関数fの内部でsetTimeout関数を使用すると、なぜそれを(1000ミリ秒前に)再度指定する必要があるのですか? –

+0

@PetrasVilkelisそのためには、setTimeoutの機能を理解する必要があります。基本的には、第2パラメータに記載されている1ミリ秒ごとに、最初のパラメータで述べたコール関数を示します。同じ関数fに言及することで、あなたは繰り返しループしてf()を何度も呼び出すことができます。 forループで何をしようとしていたのですか? –

+0

HTMLではなくテキストを表示するのが目的の場合は、 'innerHTML'の代わりに' textContent'を使うのが良いでしょう。 – trincot

0

あなたはそうのようにそれを行うことができ、私は説明のためのコードにコメントを提供:ダウン10 0に

から

var count = 10; 
function timer(targetValue) { 
    // display first number on screen 
    document.getElementById("timer").textContent = count; 

    // decrease count by 1 
    count--; 

    // check if timer is still grater than target value 
    if (count >= targetValue) { 
     // call timer() function every second to update 
     setTimeout(timer, 1000, targetValue); 
    } 
} 
timer(0); 

カウントダウンカウントするようにしたいです10から5まで?単純に使用するtimer(5)

関連する問題