- ベストアンサー
JavaScript初心者のためのフォームのオプション選択に応じて画像を変える方法
- JavaScript初心者の方がフォームのオプション選択に応じて画像を変える方法について教えてください。
- 質問者はショッピングカートのフォームで、ドロップダウンメニューでオプションを選択するとそれに応じて画像を変えたいと考えています。
- 質問者のフォームのソースコードの一部も共有されており、VALUEにオプション名と追加価格を記入しているため、どのように実装すれば良いのかわからないとのことです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、そのサンプルのまま とするなら fname=parts.options[parts.selectedIndex].value; を fname=parts.selectedIndex; と変えるだけで使えます。 valueに関係なくOptionリストの上から順に、 0,1,2,3,4・・・の番号です。 そのサンプルもう少し整えた方が良いと思いますけど。
その他の回答 (3)
- cb400NC-31
- ベストアンサー率50% (1/2)
取得した値をカンマ区切りで分割し、色識別する値を取得したら いかがでしょう? サンプル <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>
補足
回答ありがとうございます。 なるほど~色識別する値を取得するという 方法があるんですね。 ありがとうございます。
- redfox63
- ベストアンサー率71% (1325/1856)
イメージのファイル名などは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]; } } といった具合で ・・・
お礼
回答ありがとうございます。 フォームもサンプルを見ながら書いたので、 仕組みがわかっていないのですが、 イメージのファイル名などは valueには反映してませんでした。 カンマで区切ればvalueにいろんな要素を 盛り込めるんですね。 ありがとうございます。
- auty
- ベストアンサー率58% (284/486)
サンプルに合わせての修正を考えて見ます。 ・ "グリーン,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"のファイル名は長さは任意ですが、”,”を含んではいけません。 以上です。おかしい所があればお知らせください。
お礼
フォーム自体もあまり解かってなかったので サンプルに合わせての修正ありがとうございます!
お礼
早速の回答ありがとうございます。 valueに関係なくできるのは、汎用性があって いいですね。 ありがとうございます。