- 締切済み
セルの背景色の取得ができない
こんばんは。いつも利用させていただいてます。また皆さんのお知恵をお貸りに来ました。 親ウィンドウのテーブルのセルの背景色が白である場合、処理をさせるため以下のコードを書きました。 if(window.opener.document.getElementById(idNameS).style.backgroundColor == "white"){ myFlg=1; } これを実行するとFirebugで、 window.opener.document.getElementById(idNameS) is null というエラーが出てしまいます。ちなみに実行時のセルの背景色は全て白です。 いったい何がnullなのでしょうか。それからどのようにしたらエラーが出ずにうまく動くのでしょうか。 ご教授よろしく願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- shinya23so
- ベストアンサー率50% (80/159)
No3追記です。 説明解りにくいかもしれないので、もう少し詳しくします。 HTMLにでもjavascriptでも、処理をしているのはブラウザです。 使用ブラウザがHTMLで"white"とあるのを、一旦null(空)に変換して、 値がなかった時と同じ処理(関数)へ 飛ばしているのではないかと思ったのです。 処理はブラウザの種類に一任されますから、 whiteをwhiteとしてあつかうブラウザも存在するでしょう。 しかし、値がnullの場合は必ず白になるはずですから、 whiteとnullの処理を同じにしておく必要があると思います。
- shinya23so
- ベストアンサー率50% (80/159)
値がnull(空)場合に、ブラウザの描画で、 白く表示しているだけではないのでしょうか。 ブラウザには自動翻訳機能があって、 HTMLの記述が正確でなくても、エラーの起こらない表示をします。 バックグラウンドの色指定がないとき表示されるのは白い背景です。 javascriptには、そういった判別機能はないと思います。 nullの場合も myFlg=1; になる処理を記述すれば いいのではないでしょうか。 要するに if(window.opener.document.getElementById(idNameS).style.backgroundColor == null){myFlg=1;} の一行を加えればいいと思います。(もちろん&&で拡張もOK)
お礼
ご回答ありがとうございます。 お礼はNo.4のご回答にまとめさせていただきました。
- fujillin
- ベストアンサー率61% (1594/2576)
nullなのでオブジェクトは存在していて、値がnullなのではと想像されます。 null値でも比較して、結果が偽となりそうな気もしますが・・・ idNameSの対象が何か不明ですが、idNameSのbackgroundColorが親ウィンドウのHTMLで明示的に指示されていないので、未定義(値がない)ということではないでしょうか? 表示にはbodyのバックグラウンドが踏襲されていたりとか・・・ =="white"の比較も、HTMLで#FFFFFFと指定をしていたりすると、違う値として判断される可能性がありますので、確認しておいたほうが良いかも。(すみませんが、想像です。確認はしていません。)
お礼
ご回答ありがとうございます。 ご指摘いただいた色のコードについてですが、今一度調べてみたところHTMLでもwhiteと記述してありましたのでその可能性もなさそうです。 補足に情報を書きますのでそちらもご覧いただけると幸いです。
補足
実は白と緑でセルに色をつけて白の部分のid名だけを取得するということをやっていて、id名の取得は出来ているのです。 つまりやりたいことは出来ているのですが、このエラーのせいで処理がとまってしまうという状態です。 id名や色の指定は出来ているようです。
- yambejp
- ベストアンサー率51% (3827/7415)
idNameSでしめしているidが間違っているのでは? (たとえば'idNameS'だったり・・・)
お礼
ご回答ありがとうございます。お礼が遅くなり申し訳ありません。 ご指摘いただいたid名の部分は間違いないようです。
お礼
ご回答ありがとうございます。 No.2の方の捕捉に書かせて頂きましたが、実は緑の時も同じエラーが出てしまうのです↓↓情報不足ですみませんでした。 しかし、ご指摘いただいた可能性も十分考えられますね。コードを修正します。参考になるご意見ありがとうございました。