• 締切済み

function open()~ではじまるように書くには??

お世話になっております。 この度、以下を function open()~ で書き出したいのですが、初心者のためやり方がわかりません。 また、これらをスタイルシートにて飾る方法もわからないほどの初心者です。 ものすごい初心者で、本当にお手数かけますが何卒宜しくお願い申し上げます。 <script language="JavaScript"><!-- d = (new Date()).getDay(); h = (new Date()).getHours(); m = (new Date()).getMinutes(); if (d == 3) { Discg = "tokei/close.png"; }else if ((h>12 && h<19) || (h == 12 && m >= 0) && (h == 19 && m <= 30)) { Discg = "tokei/open.png"; }else { Discg = "tokei/close.png"; } document.write('<IMG src="' + Discg + '" border="0">'); </script>

みんなの回答

回答No.6

0.5秒おきに、「:」コロンが点滅するやつ書きました。 colon.png と black.png の画像は自分で作ってね。 画像を文字にすると承認されるまで面倒だし、IE6だと見られないし。 <img src="tokei/colon.png" alt=":" id="colon"> ここからは、</body>の直前に。 全角空白は半角に。 <script type="text/javascript"> (function ( ) {  var images = [ ];  var target = document.getElementById( 'colon' );  var state = 0;    images[0] = new Image;  images[1] = new Image;  images[0].src = 'tokei/colon.png';  images[1].src = 'tokei/black.png';  setInterval( function ( ) {   state += 1;   if( 1< state ) {    state = 0;   }   target.src = images[ state ].src;  }, 500); })(); </script> </body>

回答No.5

>私への言葉ですよね? ちがう×2。 質問者が数年前の自分のようでね、簡単な用語でも、アップアップしてたころを思い出した。 その上で、with( new Date ) { }なんていう省略できる用語を使っても、初心者にとって 何がなにをどう省略しているのか、理解できないだろうよ。という意味。 私は、短いコードにするのが好きなので、ついそれを、回答に使ってしまった。 つまり相手を考えずに使ってしまったことに対しての自分への反省も込めています。 >自分自身も伝えたいことが定まっていないということですかね そんなことは無いと思うよ。 過去の自分を省みれば、おかしな(珍)回答をしている点で、 私は、あなたの数段上だと思う^^; (10をかける!の回答に「評価する」に1票入れたのは誰?) 質問者の方へ 自分のできる範囲で、協力はしてあげたいけど、情報が小出しというか、 アドバイスがスルーされているとかで、テンション下がりっぱなしです。 しかも自分の回答が、まだまだミスだらけで、それも下がる要因ですが・・・。

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.4

>1、2それぞれを外部ファイルにして組み込めばよいと考えた >2は直接htmlに記述されているため、これを外部化すれば動くのでは? 外部化することよって動く、ということなく、むしろ外部化によって、ミスを犯したり。 そして、外部化と関数化は無関係。関数でなくとも外部化可。 と、いうことは置いておいて、とりあえずの成功を収めるため、「動けばいい」の主義で。 個別に動かすことができるとのことですので、この典型的な現象の原因は 変数名の重複 にあります。(それ以前の問題かも?) 変数名、関数名あわせて名前を全てリストアップし、1と2の間で重複がないか確認。 重複を見つければどちらかを別の名前に置き換える。 あなたはvarを使わない癖があるようですが、取り敢えず名前が被らないようにだけでも注意してください。 それでも解決されないなら、 思い込みにより解決策が見えない場合もあるので、1,2を両方組み込んだ状態の HTMLソース、javascriptのコード“全て”を見せるという手段を強くお勧めします。 (個人情報関連は伏せつつ、他は何も削らずに) >babu_babooさん >いきなりガンガン色々なことを言われても理解が難しいときもあります 私への言葉ですよね?余計なことは削ってるつもりなのですが、 自分自身も伝えたいことが定まっていないということですかね・・・反省。 >今にして思えば、with( new Date ) { }なんてものは、無謀ですよね~。 どういうことなのか気になるので、一言でもいいので回答のついでにでもお教えいただければ嬉しいです。

回答No.3

いきなりガンガン色々なことを言われても理解が難しいときもあります。 でも、お店のためにも、がんばってくださいね。応援もこめて助言します。 タイマーの数値は分刻みで動きますが、コロン「:」の部分は、秒単位で点滅でしたね。 スクリプトでも良いのでしょうが、その部分だけアニメーションGIFが楽かもしれません スクリプトは、<head>内に置くだけとは限りません。 <body onLoad="呼び出したい関数()"> などとして、読み込みが完了したら起動させたいのかもしれませんが 最後の</body>の直前に<script ~>を置くと、onLoad=""も必要がありません。 むしろその方が、トータルで見た速度も速い(?) なので、自分は、onLoadは使用しなくなりました。 document.writeは、HTML文書を読み込んだ後に行うと、全画面が書き換えられてしまい 思うような表示にはなりません。 なので、<img src="xxx.png">の部分のタグを書くのではなく、スクリプトでsrcの部分だけを書き換えます。 今にして思えば、with( new Date ) { }なんてものは、無謀ですよね~。

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.2

そもそも何で関数化したかったのでしょうか?そこすら見えていなかった? 関数にしたからには実行が必要です。 function Open(){~} の中では関数"Open"を定義しただけです。 「こういうことをこれからするから準備しておいてね」と。 実行のタイミングはいつにするつもりだったのでしょうか?補足願います。 ページを読み込んでから処理開始、何かをクリックしたとき、など、 意図するタイミングがないのであれば無意味です。元に戻しましょう。 因に前の質問を閉めなかったのはまだ回答を受付中ということでよろしいですね? 初心者なのは仕方がないです。 ですがUTCの事、議論になっていることに対して自分がどうしたいのか補足すべきです。 それと質問内容が動きすぎて回答者が困ります。 自分がどこまでやってどこがだめだったのか、どこにヒントが欲しいのかどこがお手上げなのか。 もう一度前回の質問のところに質問内容をまとめてください。

alaska217
質問者

お礼

ありがとうございます。 まず私のやろうとしていることですが ◎webサイトに1、javascriptでの時計表示、2、時間によって営業か閉店中かを示す画像の表示、この二点です。※質問番号:5617235の画像参照 ◎関数化の理由 みなさんから解答を得たのですが、実際自分でファイルに書いてみると機能しない。 しかし、頂いた回答の中で別々に1の機能、2の機能のみで頂いたものもあり、これは個別に動かすことができる。 それならば自分で統一して動かせばよいとの判断をし、1、2それぞれを外部ファイルにして組み込めばよいと考えた。 1に関しては外部ファイル化されており、関数名が定義されている。 2は直接htmlに記述されているため、これを外部化すれば動くのでは?と思い、今回の質問に至っております。

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.1

前回、前々回の質問が受付中のままですが、解決したのでしょうか? >これらをスタイルシートにて飾る 解釈すら間違えていらっしゃるようなのですが。 飾るのはhtml要素(今回の場合<img>)です。スクリプトを飾るのではありません。 本題。 >function open()~で書き出したい 無理です。 openという名前は使用できません。使用済みです。 (windowオブジェクトにwindow.openメソッドが定義済み) 他の名前をご利用ください。 Openのように大文字を使うだけでも重複を回避できます。 function Open(){ //処理内容 } 余計なお世話ですが、 <script language="JavaScript">には前の質問でも指摘がありましたよね? d = (new Date()).getDay(); h = (new Date()).getHours(); m = (new Date()).getMinutes(); 同じものを表すつもりなのにコンストラクタを3回も呼ぶなんてナンセンス。 そもそも、処理中に日付またいだりしたら値が狂います。 条件分岐のこととかIMGとかは、、、たくさんツッコミ入れてもきついでしょうから触れないでおきます。 <script type="text/javascript"><!-- function Open(){ var d,h,m,Discg with(new Date)d=getDay(),h=getHours(),m=getMinutes() ... } --></script>

alaska217
質問者

お礼

有難う御座います。 今、headに以下を記述しましたができないようです。 この記述自体まちがっているのでしょうか?? 宜しくお願い致します。 <script type="text/javascript"><!-- function Open(){ var d,h,m,Discg with(new Date)d=getDay(),h=getHours(),m=getMinutes() if (d == 3) { Discg = "tokei/close.png"; }else if ((h>12 && h<19) || (h == 12 && m >= 0) && (h == 19 && m <= 30)) { Discg = "tokei/open.png"; }else { Discg = "tokei/close.png"; } document.write('<IMG src="' + Discg + '" border="0">'); } </script> これで

関連するQ&A

専門家に質問してみよう