0

要素オプションの値を取得しようとしています:

<div id="decorazioni_agg">Decorazioni aggiuntive:<br>
        <select id="decorazioni" name="decorazioni">
            <option class="option" value="smarties">Smarties</option>
            <option class="option" value="scaglie">Scaglette di
                            cioccolato</option>
            <option class="option" value="cheerios">Cheerios</option>
            <option class="option" value="chocopops">Choco 
                            Pops</option>
        </select><br>

        <input class="button" name="aggiungi" type="button" value="Aggiungi 
                    decorazione" onClick="add_decoration(decorazioni.value)">
    </div>

これが add_decoration(obj) 関数です。

function add_decoration(tipo)
{
if(tipo == 'smarties')
    add_smarties();
else
    add_something(tipo);
}

現在、これは Chrome と IE8 の両方で機能していますが、Firefox 3.5 では機能していません。Firefox エラー コンソールには次のように表示されます。

decorazioni is not defined

コードをきれいに保つために、たくさんのスイッチを使用せずにどうすればよいですか? 前もって感謝します

4

2 に答える 2

0
onclick="var elem = document.getElementById('decorazioni'); add_decoration(elem.options[elem.selectedIndex].value);"

ただし、インライン イベントではなく、適切なイベント登録を使用することをお勧めします。jQuery の例を次に示します。それを機能させるには、ボタンにIDを与えます:

$('#buttonid').on('click', function() {
    add_decoration($('#decorazioni').val());
});
于 2012-05-10T14:49:33.110 に答える
0

HTML でイベント ハンドラーをバインドしないでください。

<input class="button" id="aggiungi" name="aggiungi" type="button" value="Aggiungi decorazione" />

document.getElementById('aggiungi').onclick= function () {
    add_decoration(document.getElementById('decorazioni').value);
};
于 2012-05-10T14:51:35.887 に答える