- ベストアンサー
現在時刻を表示させたい!
JavaScriptで、画面上に現在の時刻を表示させたいのですが、 <HEAD> <script type="text/javascript"> <!-- function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } // --> </script> </HEAD> <BODY onload="jikoku()"> <form name="F1" action="#"> <input type="text" name="T1" size=50> </form> </BODY> </HTML> とタグを打つと、「西暦/月/日にち/曜日/時刻/~」 と細かく出てきてしまいます。 ほんとうは、時刻以下、曜日から西暦までは必要ないんです。 現在時刻のみ(23:25:31)といった具合に×時×分×秒 の部分だけ表示させたいんです。 どうしたらいいか、教えてください。 お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
たびたび失礼します。 補足されたソースを実際に試してみたのですが、やはりこちらでは現象が再現しませんでした… 現象自体がちょっと掴みきれていないので、これが適切な回避方法になるかどうかはわからないのですが、前回のものからもう少し手を入れて、表示方法を変えたスクリプトを組んでみましたので、こちらをお試しいただけますか? こちらの方法はいわゆるDHTML的手法を使ったものになります。 <HTML> <HEAD> <script type="text/javascript"> <!-- br0=navigator.userAgent; if (br0.match(/Opera/i)){ if (br0.match(/[0-6].[0-9][0-9]/)){ br=1; } } else {br=0;} /* Opera対策:Opera 6.xxのDOMの実装が不完全なので、それらをはじくために利用。 */ function jikoku() { 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+"\""; if (document.getElementById && br!=1){ ntime=ntime.replace(" "," \;"); document.getElementById("clock").innerHTML= ntime;} else {document.F1.T1.value = ntime;} window.setTimeout("jikoku()", 1000); } // --> </script> </HEAD> <BODY onload="jikoku()"> <div id="clock"> <form name="F1" action="#"> <input type="text" name="T1" size=50 style="border-style: none;"> </form> </div> </BODY> </HTML> こちらの方法では、フォーム内に結果を表示するのではなく、<div id="clock">の中のHTMLをJavaScriptから書き換えてやることで時刻の表示をするようになっています。 なお、<div id="clock">に対してスタイルシートを適用することも可能です。 ただ、古いブラウザは、この改めて盛り込んでみた手法に対応していないので、従来のフォームの中に時刻を表示させる仕掛けも残して、古いブラウザでも表示できるようにしてあります。 解決しなかったら、ごめんなさい。
その他の回答 (5)
すみません。 「数字の周りのブルーの外枠」が指している意味が掴みきれていないので、不適当な回答になってしまっていたかもしれません。 こちらで表示させている限りでは、ここで挙げられているソースを表示させた時に、数字の周りにはブルーの枠が出ていないんです… もしよろしければ、そのブルーの外枠が出ているページのHTMLソースと、使用しているのでしたらCSSのソースを補足していただけませんか? こちらでも同じソースを用意しないと、ちょっと的確な回答ができないかもしれませんので… もちろん、ページタイトルや文章の内容、リンク先のURLなどはすべて隠して構いません。 ソースだけを開示していただければ十分です。
お礼
本当に、わざわざスミマセンm(__)m ありがとうございます。。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <script type="text/javascript"> <!-- function jikoku() { 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+"\""; document.F1.T1.value = ntime; window.setTimeout("jikoku()", 1000); } // --> </script> </HEAD> <BODY onload="jikoku()"> <form name="F1" action="#"> <input type="text" name="T1" size=10 style="border-style: none;"> </form> </BODY> </HTML> ・・デス。
補足読みました。 数字の周りのブルーの外枠というのは、input要素の入力欄の枠のことでしょうか? それでしたら、スタイルシートで境界線を表示させないように指定すれば消せると思います。 文字色・背景色などについても、スタイルシートで指定できると思います。 境界線を消すには、「<input type="text" name="T1" size=50>」この部分を、 <input type="text" name="T1" size=50 style="border-style: none;"> とすればよいと思います。 なお、入力欄へのスタイルシートは、IE 6とNetscape 7では反映されることを確認しましたが、他のブラウザでは反映されない場合もあります。 見当違いでしたらごめんなさい。
お礼
ブラウザ、IE6だけれど、 できなかった(;;)
- poku98
- ベストアンサー率42% (47/111)
No1です。 間違えてしまいました。 時刻だけでしたよね。 <script type="text/javascript"> <!-- function jikoku(){ myDate=new Date(); myHour=myDate.getHours(); myMinute=myDate.getMinutes(); mySecond=myDate.getSeconds(); if (myHour<10) {myHour="0"+myHour} if (myMinute<10) {myMinute="0"+myMinute} if (mySecond<10) {mySecond="0"+mySecond} document.myform1.myclock.value=" "+myHour+"時"+myMinute+"分"+mySecond+"秒"; setTimeout("jikoku()",1000); } //--> </script>
お礼
たびたび、どうも、すみませんm(__)m ソースがちょっと違ったので、デザインが変わるのかも~って思って(前の人のをコピーしたらできたんdすが)一応やってみたら、、、、数字、消えました。。(ーー; でも、度々教えてくださって、どうもありがとうございますm(__)m
.getHours()、.getMinutes()、.getSeconds()メソッドをそれぞれ利用すればよいと思います。 実例を挙げます。 function jikoku() { 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+"\""; document.F1.T1.value = ntime; window.setTimeout("jikoku()", 1000); } 質問文中のスクリプトを元にしましたが、1桁台の値が表示される場合に表示がずれるのを防ぐ意味で、少しスクリプトに手を加えてみました。 このような感じではいかがでしょうか? 参考になれば幸いです。
お礼
できました! ありがとうございます。 それから、数字の周りにブルーの外枠ができてしまうんですが、 それはどうやったら取り外すこと、できるんでしょか? お願いしますm(__)m
- poku98
- ベストアンサー率42% (47/111)
<script type="text/javascript"> <!-- function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } // --> </script> </head> <body onload="jikoku()"> <form name="F1" action="#"> <input type="text" name="T1" size=50> </form> </body> でどうでしょう?
お礼
コピーしてやってみましたが、 できませんでした・・
お礼
でっきました~♪ すごいですね~!!!(@@) 天才です!! ほんとに(!)、どうもありがとうございますm(__)m かなり感動してます! アリガトウ!! もっと勉強して精進せねば。。。。