- ベストアンサー
getElementByIdで謎のエラーが・・・
こんにちは。以前も同じ質問をさせていただいた者です。 http://oshiete1.goo.ne.jp/qa4199640.html getElementByIdでセルの背景色を変更するために document.getElementById(planId).style.backgroundColor="white"; というコードを書いたのですが、 document.getElementById(planId) is null というエラーが出てしまいます。しかしセルの塗りつぶしはできているという謎のエラーです。 ここからが以前より多少進展したところなのですが、どうやら原因はID名にあるようです。 実は、planIdは一つ以上の変数の内容と組み合わせて生成しています。 a=ABC; b=123; planId=a+String(b); の様にです。 ID名は動的なものでないと困るので、変数を使っていたのですがこういうやり方はできないのでしょうか? もしほかにいい方法があればご教授ください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは getElementsByName()で、複数回目の参照以降にエラーが出るというのは体験したことがありますが、getElementById()は安定していると思います。(そのときはId参照に切替えました) ()内のid指定は変数でもOKです。 多分、Object.getElementById(id).property というような使い方をされているでしょうから、エラーが出る時のObject、id、propertyがそれぞれ正しくなっているかを再確認されてみてはいかがでしょう? a = document.getElementById(planId); のように分解しても、この行でエラーになるのあれば、そのときのplanIdの値が正しいか(IDとして存在している値か)を確認してみては?
その他の回答 (1)
- pick52
- ベストアンサー率35% (166/466)
気になったのですが、 > a=ABC; これは ABC という変数を a に代入していますよね。 文字列なら a = 'ABC'; ではないでしょうか。 ところで、ブラウザはなんでしょうか。 みたところ、FxもしくはGeckoエンジンを搭載したブラウザのようですが。 alert(planId); でちゃんと意図したIDになっているかと alert(document.getElementById); で、 document.getElementById が存在しているかを確認してください。
お礼
返事が遅くなりすみません。 >これは ABC という変数を a に代入していますよね。 間違えました↓↓ご指摘ありがとうございます。 >ところで、ブラウザはなんでしょうか。 Firefoxです。 ご指摘いただいたとおり確認してみましたが問題ないようです。 たしかにそのあたりが怪しいとは思うのですが,原因がなかなかつかめません。 ご回答ありがとうございました。
お礼
返信が遅くなりすみません。 ご指摘いただいた点を再確認しましたが,問題ありませんでした。 しかし,ID指定に変数が使えるとはっきりわかっただけでも収穫ありです。ありがとうございます。