2016-06-15 5 views
0

を実行します。のJSスイッチは、常に私は2つの変数を持つ最初のケース

私は私が私の場合には、それを実装しようこの回答https://stackoverflow.com/a/9235320/3917754が見つかりました:

switch (var1 | var2) { 
    case ('Contact' | true): 
     $('#btnCopyCompanyAddress').removeClass('hidden'); 
     $('#btnCopyPersonalAddress').addClass('hidden'); 
     break; 
    case ('Company' | true): 
     $('#btnCopyCompanyAddress').addClass('hidden'); 
     $('#btnCopyPersonalAddress').removeClass('hidden'); 
     break; 

    default: 
     $('#btnCopyCompanyAddress, #btnCopyPersonalAddress').addClass('hidden'); 
    } 

が、常に最初のケースであっても= Companyvar1と= truevar2場合に実行されます。

+1

あなたが ' '文字列' どう思いますか|本当ですか?引用符で囲まれた答えは数字とビットごとのORを使用することに注意してください。 – BeyelerStudios

+0

''任意の文字列' |真 '===' 1' –

答えて

0

それは常に'any string string' | true === 1結果常に1以来、最初のケースと一致します。

ビット単位演算子は、そうストリング結果NaN又は0true結果1を解析する文字列の両方の値を処理しました。なり、結果は1を結果NaN | 1、として計算する(値がNaNInfinityであれば、それは0に変換されます)

参照してください。Bitwise operations on non numbers

は、だから、代わりに連結をしてみてください、この場合には動作しないでしょう。 "|" あなたの代わりに "+" を使用することができ

switch (var1 + var2) { 
 
    case ('Contacttrue'): 
 
    $('#btnCopyCompanyAddress').removeClass('hidden'); 
 
    $('#btnCopyPersonalAddress').addClass('hidden'); 
 
    break; 
 
    case ('Companytrue'): 
 
    $('#btnCopyCompanyAddress').addClass('hidden'); 
 
    $('#btnCopyPersonalAddress').removeClass('hidden'); 
 
    break; 
 

 
    default: 
 
    $('#btnCopyCompanyAddress, #btnCopyPersonalAddress').addClass('hidden'); 
 
}

0

function Check(var1, var2) { 
    switch (var1 + var2) { 
    case ('Contact' + var2): 
     alert('1'); 
     break; 
    case ('Company' + var2): 
     alert('2'); 
     break; 
    default: 
     alert('0'); 
} 
} 
+0

@PranavCBalan、はい、そうです...気づかなかった – demo

関連する問題