ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4199640 セルの背景色の取得ができない
質問者:kai1192 こんばんは。いつも利用させていただいてます。また皆さんのお知恵をお貸りに来ました。

親ウィンドウのテーブルのセルの背景色が白である場合、処理をさせるため以下のコードを書きました。

if(window.opener.document.getElementById(idNameS).style.backgroundColor == "white"){
myFlg=1;
}
これを実行するとFirebugで、
window.opener.document.getElementById(idNameS) is null
というエラーが出てしまいます。ちなみに実行時のセルの背景色は全て白です。

いったい何がnullなのでしょうか。それからどのようにしたらエラーが出ずにうまく動くのでしょうか。
ご教授よろしく願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/07/24 01:03
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

ANo.4 No3追記です。
説明解りにくいかもしれないので、もう少し詳しくします。
HTMLにでもjavascriptでも、処理をしているのはブラウザです。
使用ブラウザがHTMLで"white"とあるのを、一旦null(空)に変換して、
値がなかった時と同じ処理(関数)へ
飛ばしているのではないかと思ったのです。
処理はブラウザの種類に一任されますから、
whiteをwhiteとしてあつかうブラウザも存在するでしょう。
しかし、値がnullの場合は必ず白になるはずですから、
whiteとnullの処理を同じにしておく必要があると思います。
回答者:shinya23so
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/25 16:44
この回答へのお礼ご回答ありがとうございます。
No.2の方の捕捉に書かせて頂きましたが、実は緑の時も同じエラーが出てしまうのです↓↓情報不足ですみませんでした。

しかし、ご指摘いただいた可能性も十分考えられますね。コードを修正します。参考になるご意見ありがとうございました。

回答

ANo.3 値がnull(空)場合に、ブラウザの描画で、
白く表示しているだけではないのでしょうか。
ブラウザには自動翻訳機能があって、
HTMLの記述が正確でなくても、エラーの起こらない表示をします。
バックグラウンドの色指定がないとき表示されるのは白い背景です。
javascriptには、そういった判別機能はないと思います。
nullの場合も myFlg=1; になる処理を記述すれば
いいのではないでしょうか。
要するに
if(window.opener.document.getElementById(idNameS).style.backgroundColor == null){myFlg=1;}
の一行を加えればいいと思います。(もちろん&&で拡張もOK)
回答者:shinya23so
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/25 16:33
この回答へのお礼ご回答ありがとうございます。
お礼はNo.4のご回答にまとめさせていただきました。

回答

ANo.2 nullなのでオブジェクトは存在していて、値がnullなのではと想像されます。
null値でも比較して、結果が偽となりそうな気もしますが・・・
idNameSの対象が何か不明ですが、idNameSのbackgroundColorが親ウィンドウのHTMLで明示的に指示されていないので、未定義(値がない)ということではないでしょうか?
表示にはbodyのバックグラウンドが踏襲されていたりとか・・・

=="white"の比較も、HTMLで#FFFFFFと指定をしていたりすると、違う値として判断される可能性がありますので、確認しておいたほうが良いかも。(すみませんが、想像です。確認はしていません。)
回答者:fujillin
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/25 12:43
この回答への補足実は白と緑でセルに色をつけて白の部分のid名だけを取得するということをやっていて、id名の取得は出来ているのです。
つまりやりたいことは出来ているのですが、このエラーのせいで処理がとまってしまうという状態です。
id名や色の指定は出来ているようです。
この回答へのお礼ご回答ありがとうございます。

ご指摘いただいた色のコードについてですが、今一度調べてみたところHTMLでもwhiteと記述してありましたのでその可能性もなさそうです。

補足に情報を書きますのでそちらもご覧いただけると幸いです。

回答

ANo.1 idNameSでしめしているidが間違っているのでは?
(たとえば'idNameS'だったり・・・)
回答者:yambejp
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/24 09:20
この回答へのお礼ご回答ありがとうございます。お礼が遅くなり申し訳ありません。

ご指摘いただいたid名の部分は間違いないようです。
最新から表示回答順に表示