1

javascirpt を学び始めたばかりで、独自の時計ウィジェットを作成しようとしています。「ourDate.toLocalString()」を使用すると、関数が呼び出されたときの時刻のみが表示されるようです。そのため、現在の時刻を継続的に維持するには、1 秒ごとに関数を継続的に繰り返す必要があると考えました。しかし、私が抱えている問題は、スクリプトを開始すると、関数が 1 回だけ繰り返されることです。私は何を間違っていますか?以下はコードです:

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

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

2 に答える 2

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。代わりに関数名を渡します。

于 2012-05-11T01:04:06.580 に答える
0

代わりにこれを行いたい:

setInterval(updateclock, 1000);
于 2012-05-11T00:55:42.723 に答える