• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScript Form OPTION value)

JavaScript初心者のためのフォームのオプション選択に応じて画像を変える方法

このQ&Aのポイント
  • JavaScript初心者の方がフォームのオプション選択に応じて画像を変える方法について教えてください。
  • 質問者はショッピングカートのフォームで、ドロップダウンメニューでオプションを選択するとそれに応じて画像を変えたいと考えています。
  • 質問者のフォームのソースコードの一部も共有されており、VALUEにオプション名と追加価格を記入しているため、どのように実装すれば良いのかわからないとのことです。

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

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.4

とりあえず、そのサンプルのまま とするなら fname=parts.options[parts.selectedIndex].value; を fname=parts.selectedIndex; と変えるだけで使えます。 valueに関係なくOptionリストの上から順に、 0,1,2,3,4・・・の番号です。 そのサンプルもう少し整えた方が良いと思いますけど。

Factical
質問者

お礼

早速の回答ありがとうございます。 valueに関係なくできるのは、汎用性があって いいですね。 ありがとうございます。

その他の回答 (3)

回答No.3

取得した値をカンマ区切りで分割し、色識別する値を取得したら いかがでしょう? サンプル <SCRIPT language="JavaScript"> <!-- img0=new Image() img0.src="images/red.gif" img1=new Image() img1.src="images/orange.gif" img2=new Image() img2.src="images/green.gif" img3=new Image() img3.src="images/blue.gif" img4=new Image() img4.src="images/glay.gif" function imgChange(parts){ fname=parts.options[parts.selectedIndex].value; var hoge = fname.value.split(',') if(hoge[1]==1000){document.imgsmp.src=img0.src;} if(hoge[1]==2000){document.imgsmp.src=img1.src;} if(hoge[1]==3000){document.imgsmp.src=img2.src;} if(hoge[1]==4000){document.imgsmp.src=img3.src;} if(hoge[1]==5000){document.imgsmp.src=img4.src;} } // --> </SCRIPT>

Factical
質問者

補足

回答ありがとうございます。 なるほど~色識別する値を取得するという 方法があるんですね。 ありがとうございます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

イメージのファイル名などはvalueに持たせているのでしょうか? たとえば『レッド,1000』なら、『,』の前の「レッド」とか ある一定の法則にしたがっているならプログラミング可能ですよ たとえばvalueを『イメージファイル名,名称,価格』といった具合にしているなら function imgChange(oParts) {   // 選択された項目のデータを『,』で分割   var ss = oParts.options[oParts.SelectedIndex].value.split(",");   if ( ss[0] != "undfined" ) {     // 拡張子無しなら     document.imgsmp.src = ss[0]+".jpg";     // 拡張子付きなら     // document.imgsmp.src = ss[0];   } } といった具合で ・・・

Factical
質問者

お礼

回答ありがとうございます。 フォームもサンプルを見ながら書いたので、 仕組みがわかっていないのですが、 イメージのファイル名などは valueには反映してませんでした。 カンマで区切ればvalueにいろんな要素を 盛り込めるんですね。 ありがとうございます。

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

サンプルに合わせての修正を考えて見ます。 ・ "グリーン,3000"    は、   "green.gif,3000"   にするとより簡単に出来ます。 ・ fname=parts.options[parts.selectedIndex].value; は、 --------------------------------------------------------- var fname0=parts.options[parts.selectedIndex].value; var fname1=fname0.split(/,/); fname=fname1[0]; tanka=fname1[1]; --------------------------------------------------------- に変更してみます。   fnameは、 そのまま同じ   tankaには、単価 が入っているはずです。適当に処理してください。 "green.gif,3000"のファイル名は長さは任意ですが、”,”を含んではいけません。 以上です。おかしい所があればお知らせください。

Factical
質問者

お礼

フォーム自体もあまり解かってなかったので サンプルに合わせての修正ありがとうございます!

関連するQ&A