2011-06-25 5 views
12

私はJavaScriptでswitch文をやってる:使用してOR演算子ではjavascriptのスイッチの文

switch($tp_type){ 

    case 'ITP': 
    $('#indv_tp_id').val(data); 
    break; 

    case 'CRP'||'COO'||'FOU': 
    $('#jurd_tp_id').val(data); 
    break; 

} 

しかし、私は、私はOR演算子を使用している場合、それは動作しませんと思います。どのように私は正しくjavascriptでこれを行うのですか? ITPを選択した場合、ITPを取得します。しかし、私がCOO、FOUまたはCRPのいずれかを選ぶと、私はいつもCRPである最初のものを手に入れます。助けてください、ありがとう!

+1

「[スイッチケースのJavaScriptまたは式」(http://stackoverflow.com/questions/6513585/javascript-or-expression-in-a-switch-case)も参照してください。 –

答えて

51

あなたはこのようにそれを再書き込みする必要があります

case 'CRP': 
case 'COO': 
case 'FOU': 
    $('#jurd_tp_id').val(data); 
    break; 

は、あなたはそれがswitch参照で文書を見ることができます。 (「フォールスルー」と呼ばれる)の間でbreak Sなしの連続case文の動作が記述されている:

各ケースのラベルに関連付けられているオプションのbreak文は確実にマッチした声明に一度スイッチのうちプログラムブレーク実行され、次のスイッチのステートメントで実行を継続します。 breakが省略された場合、プログラムはswitchステートメントの次のステートメントで実行を続けます。お使いのバージョンでは、唯一の最初の項目(CRP)のために働く理由については

(非空の文字列がブールコンテキストでtrueに評価するため)表現'CRP'||'COO'||'FOU''CRP'に評価されるため、それは単にです。したがって、caseの文は、一度評価されたばかりのcase 'CRP':と同等です。

+6

これは「フォールスルー」と呼ばれます:http://en.wikipedia.org/wiki/Switch_case。それぞれの 'case 'を別の行に置くと、IMOを読みやすくなります。 –

関連する問題