• ベストアンサー

リアルタイム時間表示について

現在の時間(リアルタイム表示)を表示したいのです。formや画像、ステータスバーを使用するのではなく document.writeを使用して表示する方法を教えてください。どうしてもリアルタイムにならないし、エラーになってできません。 Javascriptは外部ファイルにまとめたいので、関数にしてHTMLに読み込みたいと思っています。教えてくださいm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.3

補足読みました。 document.write()についてですが、このメソッドはページロード時にHTML文書の内容としてテキスト類を書き出すことは可能です。 しかし、HTML文書のレイアウトが確定したあと(ファイルの読み込みが終了した後)に、このメソッドでさらに追加して内容を書き出すことは、基本的にできません。 ですので、このケースでそれを利用しようとしても、エラーになります。 ですので、document.write()では、ページロードごとにその時点に対応した内容を書き出すなどのケースでは有用ですが、この時刻表示などのようにページロードが終了した後にも内容を書き換えたいというケースには向いていないと思います。 ページロード後にdocument.write()で内容を書き換えたいという場合、document.open()でドキュメントストリームを開きなおし、その上でdocument.write()を使って内容を書き出すことも一応は可能ですが、そうするとそれまで表示されていたページの内容がすべて破棄されてしまいます。 ただ、Netscape4.xxのDHTMLについては私はあまり詳しくないのですが、#1の方が挙げられている参考URLを見る分には、Netscape4.xxではdocument.layers["特定要素のid名"].document.open()で破棄される内容を特定要素にとどめることができるようですので、この手法を使って内容の書き換えが行えるようですね。 あと、補足ですが、前に挙げたスクリプトは、Netscapeでもバージョン6以降では動作しますよ。 Netscape6でも、document.getElementById().innerHTMLは有効のはずです。 Netscape4.xx以前のバージョンではDOMに対応していないので、動作しません。

nawa_chan
質問者

お礼

いつもありがとうございます。 いろいろと、勉強になりました。 まだまだ、Javascriptは勉強することが多く悩める毎日です。本当にありがとうございました。

その他の回答 (2)

noname#199778
noname#199778
回答No.2

document.write()を使って書き出すのは、このケースではあまり適切な方法ではないのではないでしょうか。 DHTML的手法を使用して、特定の要素に書き出されているHTMLの内容をJavaScriptから書き換えるのが良いと思います。 ソースに関しては、過去に同じような質問に回答した時の使いまわしですが、 function jikoku() { if (document.getElementById){ now = new Date(); hr = now.getHours(); min = now.getMinutes(); sec = now.getSeconds(); hr = hr.toString(); min = min.toString(); sec = sec.toString(); if (10>hr){hr = " "+hr;} if (10>min){min = "0"+min;} if (10>sec){sec = "0"+sec;} ntime=hr+":"+min+"\'"+sec+"\""; ntime=ntime.replace(" ","&nbsp;\;"); document.getElementById("clock").innerHTML= ntime; setTimeout("jikoku()", 1000);} } 以上をスクリプトファイルの内容に記述して、HTMLの方は時刻を表示したい部分に <span id="clock"></span> ないし <div id="clock"></div> として、さらに<body>の開始タグに「onClick="jikoku()"」と入れれば動作してくれると思います。 ただ、閲覧側のブラウザのJavaScriptとDOMの実装によって動作するかどうかが分かれます。 上のスクリプトではIE5.x以降と、Netscape6以降でなら動作すると思います。 参考になれば幸いです。

nawa_chan
質問者

補足

お返事ありがとうございます。 やってみました。できましたm(__)m ただ、どうして document.writeは適切な方法ではないんでしょうか?理由はわからないのですが、きっと適切でないから、いろんな作例に載っていないのですね。 なお、innerHTMLだとNeでは作動しないのですね。 もしよかったら、document.writeは適切ではない理由を教えてくださいm(__)m

回答No.1

↓ココのソースをコピペしたらいいんじゃないですか?(笑) JavaScriptはちょっと検索すれば時計でも何でもいっぱい見つかりますよ~(^^)

参考URL:
http://member.nifty.ne.jp/marsh/misya/java/etc/tokei2.html
nawa_chan
質問者

お礼

このサイト気に入りました。もちろん「お気に入り」にも登録しました。ありがとうございました。

nawa_chan
質問者

補足

参考になりました。 確かに載っていました。 他の面でも勉強になることがいっぱいありました。 どうもありがとございます。

関連するQ&A