• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptの記述について)

JavaScriptの記述について

このQ&Aのポイント
  • JavaScriptを使った画像切り替えのプログラムで、メイン画像がremoveされずに二回目にremoveされる問題が発生しています。
  • ボタンをマウスオーバーするとメイン画像が切り替わる機能を実装していますが、一回のremoveChildでメイン画像がremoveできない問題が発生しています。
  • 解決策として、removeChildを二回呼び出すことで問題は解決しますが、なぜ一回のremoveChildではメイン画像がremoveできないのか疑問です。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

独学者のお仲間です。 >なぜ一回のimg_change.removeChild(img_change.firstChild);では >メイン画像をremoveできないのでしょうか div要素内の子要素はタグのある要素だけではなく、テキスト要素も子要素と見做されているからでしょう。 ご提示のソースではテキストらしきものは見えませんが、改行なども含めてテキストとされますので、firstChildがテキスト、secondChildが画像要素となっていると想像されます。 画像要素を指定してremoveすれば、ご期待の通りになるかと思いますが、この場合はdiv内を空にしてしまえばよいので、  while(img_change.firstChild) img_change.removeChild(img_change.firstchild); のような方法でも解決できるかと思います。 しかし、もう少し考えてみると、今回の場合は画像の表示内容を変えるのが目的なので、要素自体を入替えなくとも画像のsrc属性を書換えれば足りるのではないかと思います。  var img_change = document.getElementById('image');  var img = img_change.getElementsByTagName("img")[0];  img.src = "○○.jpg"; みたいなことで。 さらに考えてみると、ご提示のコードだとボタンが増減する毎にスクリプトを何箇所か書換えなければならなくなりますが、この次には、数の影響を受けにくいスクリプトの書き方を考えてみるのもよろしいかもしれません。 それによって、個別のidを減らせるでしょうし、コード全体も短くなる可能性もあります。表示対象のURIだけは数の影響を受けますが、配列で定義するとか非表示でHTMLに記載しておくとか…

その他の回答 (1)

回答No.2

このような場合、どのブラウザで、どのバージョンで検証したのか記載しましょう。 そうでないと、正確な回答はえられません。 だいたいはNo1さんが説明していただきましたが、クロスブラウザの問題かもしれません。回答者が意識していない場合もありますので(特に質問者さんは意識していないようで)、まずその辺の基本的情報を記載しましょう。 これらの問題は、単にDOM操作だけの問題でもないので・・・

tomo19860508
質問者

お礼

すみませんそうですよねブラウザによってちがいますものね。。 今後質問する際はそこも記載して行こうと思います。 ありがとうございました。