2017-12-16 4 views
-2

私はリアルタイムクロックを実行しようとしていましたが、問題が発生しました。実際にクロックが更新されていないということは、setTimeoutは機能していません。助けてもらえますか?このJavascriptのリアルタイムクロックでsetTimeoutを使用するにはどうすればよいですか?

これは私が書いたコードです:それは更新したことがないので、

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title></title> 
 
</head> 
 

 
<body> 
 
    <p id="p"></p> 
 
    <script> 
 
    var currentDate = new Date(); 
 

 
    function startClock() { 
 

 
     time = currentDate.getHours() + ":" + currentDate.getMinutes() + ":" + currentDate.getSeconds(); 
 

 
     document.getElementById("p").innerHTML = time; 
 

 
     setTimeout(startClock, 1000); 
 
    } 
 

 
    startClock(); 
 
    </script> 
 
</body> 
 

 
</html>

答えて

1

を実際に、setTimeoutが正常に動作しているが、しかし、あなたは、機能のcurrentDate外をインスタンス化します。

これは、日付がインスタンス化されたときにのみ取得されるためです。つまり、それ自体は更新されません。これは、インスタンス化すると一度だけインスタンス化すると、インスタンス化されてからの時間が保持されることを意味します。私は、関数内でCURRENTDATEをしてください置くべき理由をも説明してもらえ

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title></title> 
 
</head> 
 

 
<body> 
 
    <p id="p"></p> 
 
    <script> 
 
    
 

 
    function startClock() { 
 
     var currentDate = new Date(); 
 
    
 
     time = currentDate.getHours() + ":" + currentDate.getMinutes() + ":" + currentDate.getSeconds(); 
 

 

 
     document.getElementById("p").innerHTML = time; 
 

 
     setTimeout(startClock, 1000); 
 
    } 
 

 
    startClock(); 
 
    </script> 
 
</body> 
 

 
</html>

+0

はこれを試してみてください? – Pier

+0

probsは、私はそれを追加しました。それはそれをクリアしますか? – user184994

関連する問題