1

こんにちは、単純なカウントダウンを作成しようとしています。
ここに私のコードがありますが、機能していません。
問題を見つけるのを手伝ってもらえますか?

function count() {
    for (var cc=20,cc > 0,cc--) {
        document.getElementById("cco").innerHTML=cc;
    }
}
count();
4

5 に答える 5

11

セミコロンの代わりにコンマを使用しています。

for (var cc=20,cc > 0,cc--)

する必要があります

for (var cc=20;cc > 0;cc--)

ただし、ループがすぐに 0 までカウントされるため、これはおそらく期待どおりには実行されません (そのため、ユーザーにはカウントダウンさえ表示されません)。あなたは次のようなものが欲しかったと思います:

var cc = 20;

var interval = setInterval(function()
{
    document.getElementById("cco").innerHTML = -- cc;

    if (cc == 0)
        clearInterval(interval);

}, 1000);

詳細については、 setIntervalおよびclearIntervalを参照してください。

于 2013-01-18T13:20:29.517 に答える
4

(少なくとも) 2 つの間違いがあります。

;1 つ目は構文です。 for ループでは、パラメーターはではなく で区切られ,ます。構文上の正しいコードは次のようになります。

function count() {
  for (var cc=20;cc > 0;cc--) {
    document.getElementById("cco").innerHTML=cc;
 }
}

第 2 に、カウントダウンはありませんが、まったく同じ要素を何度もオーバーライドし、ユーザーが結果を確認する時間がありません。

より良いアプローチはsetTimeout()、ここで使用することです。これは次のようになります。

var cc = 20;
function count() {
  document.getElementById("cco").innerHTML=cc;
  if ( cc > 0 ) {
    setTimeout( count, 1000 );
  }
}

setTimeout( count, 1000 );

このsetTimeout()アプローチでは、ブラウザーが実際に変更をレンダリングする (そしてユーザーがそれを見る) までに時間がかかります。

于 2013-01-18T13:24:08.943 に答える
1

for ループ','で withを変更します';'

function count() {
  for (var cc=20;cc > 0;cc--) {
    document.getElementById("cco").innerHTML=cc
  }
}
count();
于 2013-01-18T13:20:25.957 に答える
1

を使用した別の再帰バージョンsetTimeout:

(function count(cc) {
  document.getElementById("cco").innerHTML = cc;
  if (cc > 0)
    setTimeout(function() { count(--cc); }, 1000);
})(10);

デモ: http://jsfiddle.net/DgWgx/

于 2013-01-18T13:27:44.320 に答える