これは初歩的な質問かもしれませんが、私は JS/jQuery は初めてです。
ページにいくつかの異なる選択ボックスがあります。それぞれの横に画像があり、異なるオプションを選択すると変更されます。ただし、これはgetElementByIdを使用した1つの選択ボックスでのみ正常に機能しますが、それらの多くではgetElementByClassNameでは機能しません。また、IE8.0でサポートされていないことを読んだため、このメソッドを使用したくありません。それぞれに個別のIDを使用せずに、1ページ内の複数の選択ボックスに対してこれを機能させる方法はありますか?
どうぞよろしくお願いいたします。これが私のコードです。
<img id="color" src="content/1.png">
<select class="mod_select" name="colors" id="changingColor" tabindex="1" onchange="changeimg()">
<option value="content/1.png">1 thing</option>
<option value="content/2.png">2 thing</option>
<option value="content/3.png">3 thing</option>
</select>
<script type="text/javascript">
function changeimg(){
document.getElementById('color').src=document.getElementById('changingColor').value
}
</script>
編集: select と img の両方にクラスを使用したいと思います。次に、1 つの div 内で特定の選択オプションを使用して、その横の img を変更します。それは可能ですか?
編集2:これはうまくいきます:
$('.mod_select').on('change', function () {
var $this = $(this);
var img = $this.prev(); // assuming select is next to img
img.attr('src', $this.val());
});
ただし、img は選択の横にありません。prevSibling を使用する必要があると思いますが、方法がわかりません。jQuery API を読んでもあまり役に立ちませんでした。助けていただければ幸いです。これが私のhtmlです:
<img src="content/1.png"> <!-- the image that needs to be updated with new select option -->
<p>text</p>
<div class="moreinfo info_icon left"></div> <!-- the div that triggers qTip -->
<div class="moreinfo_text"> <!-- this is a hidden div this that is shown by qTip with -- text: $(this).next('.moreinfo_text') -->
<img src="content/qtip_img.jpg">
<p>qTip text</p>
</div>
<select class="mod_select" name="colors" tabindex="1">
<option value="content/1.png">1 thing</option>
<option value="content/2.png">2 thing</option>
<option value="content/3.png">3 thing</option>
</select>