• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:時間によってテーブルのTDの背景画像を変更)

時間によってテーブルのTDの背景画像を変更する方法

このQ&Aのポイント
  • ホームページの一部で使用しているテーブルのTDの背景画像を時間によって変更したいです。具体的には、夕方時には夕方の景色、夜は夜の景色を表示するようにしたいです。
  • 現在のJavaScriptでは、インターネットエクスプローラーでは正常に表示されるが、ネットスケープ7.1ではエラーになってしまいます。エラーの原因がわからないため、解決方法を教えていただきたいです。
  • HTMLのコードは提供されています。タグは正しく書かれているため、タグ内のJavaScript部分に問題がある可能性があります。

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.2

最後に記入しているソースであれば問題ありません。 document.all はIE限定ですので、ネットスケープでは反応しません。 で、私が書いていた t1 = document.getElementBy("t1"); というのは、例えば t1.style.backgroundImage="url(★)" のように使用していますが、そのt1が何なのかを指定していないからエラーになっていました。 IEではOKのようですが、IE以外のブラウザではエラーになります。 t1 = document.getElementBy("t1"); としておけば、 t1.style.backgroundImage="url(★)" このt1は「あぁ、IDがt1とついている部分のことなんだな」と分かるわけです。 今のようにt1の個所を全て、 document.getElementById("t1").style.backgroundImage="url(★)" としてもいいですが、 t1 = document.getElementBy("t1"); を today = new Date() var checkNum = today.getHours() 以下に加えても良いと思います。

timothykun
質問者

お礼

 とても、丁寧な説明を本当にありがとうございました。  なるほど、初めに定義させておけば、ソースを短くできるわけですね。  もっとたくさん勉強して、クロスブラウザのプログラムをゼロから作れるようになりたいと思っています。  本当にありがとうございました。

その他の回答 (1)

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

t1 = document.getElementBy("t1"); を加えると解決するかも。

timothykun
質問者

お礼

アドバイスありがとうございます。 まだプログラムは初心者です。HTMLタグも二年前に覚えたばかりで、JavaScriptも本を買って独学で吸収していますが、いまだにサンプルを配っているサイトのソースをちょこっと変えて使うぐらで、まだゼロから作るまでにはいたってませんので、まだ僕は基本がなっていないようです。  ですので、初歩的な質問になってしまうのですが、  t1 = document.getElementBy("t1")を加えるというのは、どこに加えるのでしょうか?  一応、自分で考えてやってみたのですが、  以前のソースでは、 function chImg(){ today = new Date() var checkNum = today.getHours() if(checkNum == 0){ t1.style.backgroundImage="url(★)" } だったのですが、 function chImg(){ today = new Date() var checkNum = today.getHours() if(checkNum == 0){ t1 = document.getElementById("t1").style.backgroundImage="url(★)" } にしてみたら、インターネットエクスプローラーでは、ステータスバーに「!」のマークが出ます。それで function chImg(){ today = new Date() var checkNum = today.getHours() if(checkNum == 0){ document.getElementById("t1").style.backgroundImage="url(★)" } としてみたら、一応、これでネットスケープでも、インターネットエクスプローラーでも、表示できるようになりました。  the845tさんが説明してくださったのはこういうことでしょうか?  「document.all()」を入れなくても、エクスプローラーでは表示されてしまうんですねぇ。  今度のソースで大丈夫でしょうか?教えてください。

関連するQ&A