2012-05-11 9 views
1

私はちょうどjavascriptを学び始めています。私は自分の時計ウィジェットを作ろうとしています。 "ourDate.toLocalString()"を使用すると、関数が呼び出されたときと同じように時刻が表示されるように見えます。だから私は、それが現在の時間を継続的に維持するために、1秒ごとに機能を連続して繰り返さなければならないと考えました。しかし、私が持っている問題は、私がスクリプトを起動するときに、関数を1回だけ繰り返すことです。私は間違って何をしていますか?時計でjavascript関数を繰り返す方法

function updateclock(){ 
ourDate = new Date(); 
document.write(ourDate.toLocaleString()); 
} 

function startclock() { 
updateclock(); 
setInterval("updateclock()", 1000); 
} 
+0

ここにすべてOKです –

+1

これは動作するはずです。ただし、 'setInterval'とそのファミリの最初の引数として文字列を使用しないでください。関数値自体を使用してください:' setInterval(updateClock、1000) '。ああ、 'document.write'を使わないでください。デバッグしている場合は' console.log'を使い、実際の作業を行うには 'document.createElement'(またはjQuery)を使います。 – Amadan

答えて

0

あなたが代わりにこれをしたい:

setInterval(updateclock, 1000); 
+1

同じものだが「評価なし」 – elclanrs

5

問題がdocument.writeある以下のコードです。ドキュメントを読み込んだ後に呼び出すと、startclock関数を含む)は、もはや呼び出すことができないドキュメント全体を上書きします。

更新代わりにHTML要素の内容:

<div id="clock"></div> 
<script type="text/javascript"> 
function updateclock(){ 
    ourDate = new Date(); 
    document.getElementById("clock").innerHTML = ourDate.toLocaleString(); 
} 

function startclock() { 
    updateclock(); 
    setInterval(updateclock, 1000); 
} 
startclock(); 
</script> 

http://jsfiddle.net/Ys87F/

また:setInterval(またはsetTimeout)に文字列を渡さない、代わりに関数名を渡します。

+0

素晴らしいbfavaretto!それはそれだった。どうもありがとうございます。また、助言をいただきありがとうございます。私はそれを完全に理解していませんが、すべての仕組みを見るためにこのコーディングを勉強します。さて、私はそれが欲しいのようにするためにCSSでそれをスタイリングに。 –

+0

@TonyWilkerson 'setInterval'アドバイスについては、[これはなぜですか](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/eval#Don%27t_use_eval!)です。 – bfavaretto

関連する問題