1

2 つのドロップダウン ボックスを使用して画像を変更しようとしています。私は jquery/javascript に関しては完全な初心者なので、正しい方向への微調整であっても、少し助けが得られるかどうか疑問に思っていました。

ここに問題があります。張り地の色の選択と塗装の色の選択が必要です。どちらも同じ商品に表示されるため、ドロップダウン ボックスが 2 つあると理想的です。

私がこれまでに持っているコードは次のとおりです。

window.onload=function()
{
    var caption=['Default Image Caption',
                'Caption1',
                'Caption2',
                'Caption3',
                'Caption4',
                'Caption5',
                'Caption6',
                'Caption7',
                'Caption8',
                'Caption9'], // This will be your images caption
    bp='images/', //base url of your images
    imgnum=8, //Number of your images. This should match on your comboboxes options.
    thumb=document.getElementById('thumb'), //id of your image that will be changing
    description=document.getElementById('caption'), //id of your caption
    combobox=document.getElementById('paint'); // id of your combobox.
    combobox=document.getElementById('vinyl');

    combobox.onchange=function()
    {
    thumb.src=bp+'Picture'+this.value+name+'.jpg';
    description.innerHTML=caption[this.value];
    }
}

HTMLは

<label>Change the Paint: </label>
<select id="paint">
<option>Change Picture</option>
<option value="1">Image 1</option>
<option value="2">Image 2</option>
<option value="3">Image 3</option>
<option value="4">Image 4</option>
<option value="5">Image 5</option>
<option value="6">Image 6</option>
<option value="7">Image 7</option>
<option value="8">Image 8</option>
<option value="9">Image 9</option>
</select><br />
<label>Change the Vinyl: </label>
<select id="vinyl">
<option>Change Picture</option>
<option Name="1">Image 1</option>
<option Name="2">Image 2</option>
<option Name="3">Image 3</option>
<option Name="4">Image 4</option>
<option Name="5">Image 5</option>
<option Name="6">Image 6</option>
<option Name="7">Image 7</option>
<option Name="8">Image 8</option>
<option Name="9">Image 9</option>
</select>

さて、以下の親切な人々の助けを借りて、私はこれを解決しました:

<script type="text/javascript">

    function callAFunction(SelectBox)
    {
        var caption=[
            'Default Image Caption',
            'Caption1',
            'Caption2',
            'Caption3',
            'Caption4',
            'Caption5',
            'Caption6',
            'Caption7',
            'Caption8',
            'Caption9'],
        bp='images/',
        imgnum=8,
        thumb=document.getElementById('thumb'),
        description=document.getElementById('caption');
        thumb.src=bp+'Picture'+paint.value+vinyl.value+'.jpg';
        description.innerHTML=caption[SelectBox.value];
    }

</script>

<img src="/images/picture1.jpg" alt="" id="thumb" />

<label>Change the Paint: </label>
<select id="paint" onChange="callAFunction(this); return false;">
    <option value="1">Image 1</option>
    <option value="2">Image 2</option>
    <option value="3">Image 3</option>
    <option value="4">Image 4</option>
    <option value="5">Image 5</option>
    <option value="6">Image 6</option>
    <option value="7">Image 7</option>
    <option value="8">Image 8</option>
    <option value="9">Image 9</option>
</select><br />

<label>Change the Vinyl: </label>
<select id="vinyl" onChange="callAFunction(this); return false;">
    <option value="1">Image 1</option>
    <option value="2">Image 2</option>
    <option value="3">Image 3</option>
    <option value="4">Image 4</option>
    <option value="5">Image 5</option>
    <option value="6">Image 6</option>
    <option value="7">Image 7</option>
    <option value="8">Image 8</option>
    <option value="9">Image 9</option>
</select>

助けてくれて本当にありがとうございます!

4

3 に答える 3

0

もしかして

window.onload=function() {
    var caption=['Default Image Caption',
                'Caption11',
                'Caption12',
                'Caption13',
                'Caption14',
                'Caption15',
                'Caption16',
                'Caption17',
                'Caption18',
                'Caption19',
                'Caption21',
                'Caption22',
                'Caption23',
                'Caption24',
                'Caption25',
                'Caption26',
                'Caption27',
                'Caption28',
                'Caption29',
                .
                .
                .
                'Caption99'
      ], // This will be your images caption - no comma on the last
    bp='images/', //base url of your images
    imgnum=8, //Number of your images. This should match on your comboboxes options.
    thumb=document.getElementById('thumb'), //id of your image that will be changing
    description=document.getElementById('caption'), //id of your caption

    var paint=document.getElementById('paint'); // id of your combobox1.
    var vinyl=document.getElementById('vinyl'); // id of your combobox2.

    paint.onchange=vinyl.onchange=function() {
      var val = paint.value+vinyl.value; // "1"+"1"
      thumb.src=bp+'Picture'+val+'.jpg'; // loads images/Picture11.jpg
      description.innerHTML=caption[val]; // loads the 12th text
    }
}

または持っている

var vinylCaption["....","....."];
var paintCaption["....","....."];

そして持っている

description.innerHTML=vinylCaption[vinyl.value] + "/"+paintCaption[paint.value];
于 2013-02-13T10:47:03.947 に答える
0

以下の変更を加えて試してみてください。

あなたは間違っているID2つの同じものを持っています.DOM

htmlで

<label>Change the Paint: </label>
<select class="selection">
    <option>Change Picture</option>
    <option value="1">Image 1</option>
</select><br />

<label>Change the Vinyl: </label>
<select class="selection">
    <option>Change Picture</option>
    <option name="1">Image 1</option>
</select>

JSで

combobox=document.getElementById('selection');

to

combobox=document.getElementsByClassName('selection');

動作確認はgetElementByClassName こちら

OPコメントへの返信。

<script type="text/javascript">

    function callAFunction(SelectBox)
    {
        var caption=[
            'Default Image Caption',
            'Caption1',
            'Caption2',
            'Caption3',
            'Caption4',
            'Caption5',
            'Caption6',
            'Caption7',
            'Caption8',
            'Caption9'],
        bp='img/',
        imgnum=8,
        thumb=document.getElementById('thumb'),
        description=document.getElementById('caption');

        thumb.src=bp+'Picture'+SelectBox.value+name+'.jpg';
        description.innerHTML=caption[SelectBox.value];
    }

</script>

<img src="" alt="" id="thumb" />

<label>Change the Paint: </label>
<select id="paint" onChange="callAFunction(this); return false;">
    <option>Change Picture</option>
    <option value="1">Image 1</option>
    <option value="2">Image 2</option>
    <option value="3">Image 3</option>
    <option value="4">Image 4</option>
    <option value="5">Image 5</option>
    <option value="6">Image 6</option>
    <option value="7">Image 7</option>
    <option value="8">Image 8</option>
    <option value="9">Image 9</option>
</select><br />

<label>Change the Vinyl: </label>
<select id="vinyl" onChange="callAFunction(this); return false;">
    <option>Change Picture</option>
    <option Name="1">Image 1</option>
    <option Name="2">Image 2</option>
    <option Name="3">Image 3</option>
    <option Name="4">Image 4</option>
    <option Name="5">Image 5</option>
    <option Name="6">Image 6</option>
    <option Name="7">Image 7</option>
    <option Name="8">Image 8</option>
    <option Name="9">Image 9</option>
</select>
于 2013-02-13T10:20:26.993 に答える
0

さて、上記の助けを借りて解決されました:

<script type="text/javascript">

    function callAFunction(SelectBox)
    {
        var caption=[
            'Default Image Caption',
            'Caption1',
            'Caption2',
            'Caption3',
            'Caption4',
            'Caption5',
            'Caption6',
            'Caption7',
            'Caption8',
            'Caption9'],
        bp='images/',
        imgnum=8,
        thumb=document.getElementById('thumb'),
        description=document.getElementById('caption');
        thumb.src=bp+'Picture'+paint.value+vinyl.value+'.jpg';
        description.innerHTML=caption[SelectBox.value];
    }

</script>

<img src="/images/picture1.jpg" alt="" id="thumb" />

<label>Change the Paint: </label>
<select id="paint" onChange="callAFunction(this); return false;">
    <option value="1">Image 1</option>
    <option value="2">Image 2</option>
    <option value="3">Image 3</option>
    <option value="4">Image 4</option>
    <option value="5">Image 5</option>
    <option value="6">Image 6</option>
    <option value="7">Image 7</option>
    <option value="8">Image 8</option>
    <option value="9">Image 9</option>
</select><br />

<label>Change the Vinyl: </label>
<select id="vinyl" onChange="callAFunction(this); return false;">
    <option value="1">Image 1</option>
    <option value="2">Image 2</option>
    <option value="3">Image 3</option>
    <option value="4">Image 4</option>
    <option value="5">Image 5</option>
    <option value="6">Image 6</option>
    <option value="7">Image 7</option>
    <option value="8">Image 8</option>
    <option value="9">Image 9</option>
</select>

もう一度ありがとう!

于 2013-02-13T12:04:27.637 に答える