- 締切済み
FireFoxにプロパティ"src"は存在しない?
指定された画像要素の"SRC"属性を書き換えて、 以下のような画像を変更するプログラムを書いています。 function hoge(ImgName){ document.getElementById("Picture").src=ImgName; } (中略) <img src="" id="Picture" onClick="JavaScript:hoge(hoge.jpg)"> IEでは実行可能なのですが、FireFoxで実行すると 「document.getElementById("Picture") has no properties」 というエラーが出てしまいます。 setAttributeなども試したのですが同様のエラーが出てだめでした。 やはり指定プロパティ(src)が存在しないので駄目みたいです。 FireFox等でIMG要素のSRC属性を書き換えるにはどうすれば 良いでしょうか。アドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- steel_gray
- ベストアンサー率66% (1052/1578)
#2の補足のコピペに前後を補足した次のようなHTMLファイルで試しましたが再現(エラー発生)しませんでした。 <html> <head> <title></title> </head> <body> <script language="javascript"> function loadimage(ImgName){ document.getElementById("Picture").src=ImgName; } </script> <script type="text/javascript"> </script> <img src="" id="Picture" onclick="JavaScript:document.getElementById('PictureWindow').style.visibility='hidden'"> <a href="JavaScript:loadimage('41.jpg')">■</a> </body> </html> ■をクリック後、ソース表示するとimgのsrcは'41.jpg'に変更されていました… (Web Developer※1 の「編集内容を反映したソース表示」で確認) 環境とか、何か違いがあるのでしょうけど、再現しない以上、ちょっと私にはわからないです。 ※1 Web Developer http://www.infoaxia.com/tools/webdeveloper/
- steel_gray
- ベストアンサー率66% (1052/1578)
Firefoxでも質問にあるような手法でのsrc属性の書き換えは可能です。 ありえそうなミスとして、 <img ~ name="Picture">としているケースです。 IEは name であっても getElementById が成功してしまう妙な実装がされています。 そうではない場合、適当に書かずに本物からコピペして補足してみてください。
補足
ソースコード、適当に書いてしまって申し訳ございません。 以下が実装中のコードです。IEで画像の切り替えを確認しています。 (関数宣言部分) <script language="javascript"> function loadimage(ImgName){ document.getElementById("Picture").src=ImgName; } </script> (IMG要素) <img src="" id="Picture" onclick="JavaScript:document.getElementById('PictureWindow').style.visibility='hidden'"> (リンク要素) <a href="JavaScript:loadimage('41.jpg')">■</a> 動作としては、ユーザがリンクをクリックすると、 loadimage関数を呼び出し、同時にローカル変数ImgNameに 画像のURLを示す文字列を渡します。その後ImgNameに 渡されたURLで、ID"Picture"で示される要素のsrc属性を 書き換えて画像の切り替えを行います。 分かりにくくてごめんなさい。
<img src="" id="Picture" onClick="JavaScript:hoge(hoge.jpg)"> ↓ <img src="" id="Picture" onClick="JavaScript:hoge('hoge.jpg')"> ではだめですか?
補足
あぁすみません。そこの文書は適当に打っていたので、 クォーテーションを付け忘れてました。実際にはもちろん 訂正いただいたとおりになっていて、IEで動作を確認しています。 紛らわしくてごめんなさい。
お礼
すみません、 色々と調査した結果。別の箇所でエラーが発生していて 動作が中断していたことが判明致しました。 問題解決いたしました。 お騒がせして申し訳ございませんでした