0

次の選択ボックスがある場合:

<select id="a1" multiple>
<option>Apple</option>
<option>Banana</option>
<option>Carrot</option>
<option>Dates</option>
<option>Eggs</option>
<option>French fries</option>
</select>

一部のアイテムが選択された場合にのみ特定の関数が実行されるような条件文if/ステートメントを記述する適切な方法は何ですか?else

意味: Apple または Banana が選択された場合、if条件 #1 が満たされ、コードが実行されます
が、Carrot または Dates または Eggs が選択された場合、if条件 #2 が満たされ、別のコードが実行されます

編集:例としてこの配列の項目を使用したと思いますが、最も使用可能な構成は、必ずしも文字列値だけではなく、選択したインデックス (またはインデックス) に条件をペグします。そうすれば、その中の値に関係なく、任意の選択ボックスで条件付き引数を使用できます。

4

2 に答える 2

1

1 つのアプローチは、関連するインデックスから関連する関数へのマップを使用して、それらのインデックスで呼び出されるようにすることです。次に例を示します。

function functionOne() {
    console.log('functionOne called');
}

function functionTwo() {
    console.log('functionTwo called');
}

var functionMap = {
    '0-1-2': function(){
        functionOne();
    },
    '4-5': function(){
        functionTwo();
    }
};

$('select').change(function () {
    var valueString = $(this).find('option:selected').map(function () {
        return $(this).index();
    }).get().join('-');
    if (functionMap.hasOwnProperty(valueString)) {
        functionMap[valueString]();
    }
});

JS フィドルのデモ

参考文献:

于 2013-08-31T14:38:27.817 に答える