-1

私はjavascriptに少し慣れていませんが、ボタンをクリックすると、他の機能を備えたプログレスバーを作成しようとしています。バーの時間を計るためにJavaScriptで設定された間隔を使用しようとしていますが、これはこれまでの私のjsです:

//Javascript Document

function progress(){
 Var uno = setTimeout("uno()", 3000);
  uno(){
   document.getElementById("title").innerHTML = "Connecting...";
   document.getElementById("progressInner").style.display = 'block';
   document.getElementById("progressInner").style.width = '20px';
  }   
}

私が収集したものから、これはどのように機能するかですが、変数を設定しているように見えますが、変数unoを使用して何もしていないように見えるので懐疑的です.... PHPの私のバックグラウンドから、それはどのように機能するかではありません:pこれについて私に与えることができますか?私のhtmlはここにあります:http://jsbin.com/apoboh/1/edit

今、それは何もしません、それは私に与えます: Uncaught ReferenceError: progress is not defined

4

4 に答える 4

3

まず、setTimeoutnotを使用していsetIntervalます。前者はコールバックを 1 回起動し、後者は設定された間隔で無期限に起動します。

次に、これらのメソッドは、setInterval をキャンセルするために使用できるトークンを返します。代わりにこれを実行してください。

function startProgress(){
     // only start progress if it isn't running
     if (!App.progressToken) {  // App is you apps namespace
         App.progressToken = setInterval(function(){
             document.getElementById("title").innerHTML = "Connecting...";
             document.getElementById("progressInner").style.display = 'block';
             document.getElementById("progressInner").style.width = '20px';
         }, 3000);         
    }
}

後で、停止したい場合:

function stopProgress(){
   clearInterval(App.progressToken);`
   delete App.progressToken
}
于 2013-02-07T16:22:40.330 に答える
0

uno()の前に「function」という単語を入れるのを忘れました

于 2013-02-07T16:24:30.420 に答える
0

この変数unoは、設定したタイムアウトへのハンドルを保持するだけです。を呼び出す必要がある場合は、後で実行する前にタイムアウトをクリアするために使用できますclearTimeout()

タイムアウトをクリアする必要がない場合、ハンドルを保存する理由はまったくありません。

于 2013-02-07T16:22:24.383 に答える
0
function progress(){
  function uno(){
   document.getElementById("title").innerHTML = "Connecting...";
   document.getElementById("progressInner").style.display = 'block';
   document.getElementById("progressInner").style.width = '20px';
  } 
 var timeoutFunc = setTimeout(uno, 3000);  
}

文字列ではなく、後で呼び出す setTimeout に関数を渡します。したがって、このコードは関数 uno を定義し、それを setTimeout に渡し、3 秒遅延させ、その後 3 秒ごとに呼び出します。

于 2013-02-07T16:22:37.660 に答える