javascript SWITCH文がトリガされない

ASP.NET C#Webアプリケーションのjavascriptに switch ステートメントがあります。私はFireBugでデバッグしていますが、エラーが出ています: switch に達すると直ちにそれが存在します。

ここにコードです:

$(function() {

    $('#received_dateTextbox').mask("99/99/99");
    $('#report_dateTextBox').mask("99/99/99");
    $('#occurrence_dateTextBox').mask("99/99/99");

    //var checkValues='';

    $('table input:checkbox').click(function() {

        if ($(this).prop('checked')) {
            var checkText = $(this).next('a').text();
            var hrefValue = $(this).next('a').attr('href');
            var trimIndex = hrefValue.lastIndexOf('\\') + 1;
            var checkValue =  hrefValue.substr(trimIndex, hrefValue.indexOf("')",trimIndex)-trimIndex);

            //checkValues+=checkValue+";";

            switch(checkValue)
            {
                //preanalytical other
                case "21": 
                    var userInput = prompt("Other:", "Other:");
                    $(this).next('a').html('Other:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical other
                case "53": 
                    var userInput = prompt("Other:", "Other:");
                    $(this).next('a').html('Other:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //postanalytical other
                case "89": 
                    var userInput = prompt("Other:", "Other:");
                    $(this).next('a').html('Other:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //other other
                case "95": 
                    var userInput = prompt("Other:", "Other:");
                    $(this).next('a').html('Other:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical liquid handler instrument failure
                case "40":
                    var userInput = prompt("Liquid Handler#:", "Liquid Handler#:");
                    $(this).next('a').html('Liquid Handler#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical olympus instrument failure
                case "41":                   
                    var userInput = prompt("Olympus#:", "Olympus#:");
                    $(this).next('a').html('Olympus#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical lcms instrument failure
                case "42":
                    var userInput = prompt("LC-MS/MS#:", "LC-MS/MS#:");
                    $(this).next('a').html('LC-MS/MS#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical liquid handler delay prod
                case "49":
                    var userInput = prompt("Liquid Handler#:", "Liquid Handler#:");
                    $(this).next('a').html('Liquid Handler#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical olympus delay prod
                case "50":
                     var userInput = prompt("Olympus#:", "Olympus#:");
                    $(this).next('a').html('Olympus#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //analytical lcms delay prod
                case "51":
                    var userInput = prompt("LC-MS/MS#:", "LC-MS/MS#:");
                    $(this).next('a').html('LC-MS/MS#:' + '' + userInput + '');
                    checkValues+=checkValue+":"+userInput;
                break;

                //wrong practice code
                case "63":
                    if (confirm("Do you want to check Report Sent to Wrong Location/Physician?"))
                    { var elNode = document.getElementById("TreeView1n82CheckBox");
                        $(elNode).prop("checked", true);
                     }
                    else
                    { var elNode = document.getElementById("TreeView1n81CheckBox");
                        $(elNode).prop("checked", false);
                    }

                break;  

                default: 
                    alert('no match');                
            }
        }
    });
    //document.getElementById('HiddenField1').value = checkValues;
});

デバッガは、 checkValue には値があります

何が間違っているのですか?

3
@marcはいそれは私がケースに入れた値を持っています
追加された 著者 l--'''''&#,
@marcはいアラートが表示されます
追加された 著者 l--'''''&#,
@pimvdbはい私はコードの残りの部分を投稿した
追加された 著者 l--'''''&#,
@marcはcheckValueを間違って宣言していますか?それはvarの代わりに文字列でなければなりませんか?
追加された 著者 l--'''''&#,
@marcは理解されていますが、それは、例えば95または63のように動作しなければならない値に対しては機能しません
追加された 著者 l--'''''&#,
エラーはありませんか?実際にswitch文を実際のコードで終了しましたか?
追加された 著者 pimvdb,
しかし、あなたが大文字と小文字を区別しているの価値の1つを持っていますか? default:alert( 'no match'); をスイッチに追加すると、警告が表示されますか?
追加された 著者 Marc B,
値に隠れたスペースやその他のものがないことを確認してください。 63 は決して 63 と一致しません。
追加された 著者 Marc B,
いいえ、checkvalueが "503"の場合、その値をトラップする case 503 がないため、スイッチは一致しません。
追加された 著者 Marc B,
アラートが表示された場合、あなたの case 値のどれも一致しません。
追加された 著者 Marc B,

3 答え

checkValue could be stored as a number, not a string as all the "case" check for.

case parseInt( "95"):... が機能するかどうかを確認します。

また、番号に文字を追加してそれをチェックすると、ケースが機能し始めているかどうかを確認します。

switch(checkValue + 'A')

and then case "53A": .... break;

2
追加された
大変ありがとうございますshabbaS!
追加された 著者 l--'''''&#,
ロシア人を救助する!私はどのようにcheckValueを定義する必要がありますか?
追加された 著者 l--'''''&#,
switch()の直前で alert(checkValue); を試しましたか?
追加された 著者 Leon,
@Tom:checkvalueは文字列ではなく、実際には数字(!)です。サンプルテストコードを参照してください: jsfiddle.net/3MXtM
追加された 著者 Leon,
@lttlrck:substrはおそらく文字列を返しますが、その文字列が数値(つまりすべての数字)のように見えるため、JSエンジンは何か不愉快なことをする可能性があります。 JSは強く型付けされていません。
追加された 著者 Leon,
私は理解していない - checkValueは明らかに文字列です。
追加された 著者 Tom,
なぜsubstrが数値を返すのでしょうか?
追加された 著者 hplbsh,
@Leonサンプルコードに誤りがあります。可能であれば、isNaN()はStringをNumberに強制しますが、プリミティブを証明しません。正しいテストはここにあります: jsfiddle.net/Trmjt/1 それは文字列であることを示しています。
追加された 著者 hplbsh,
また、JSスイッチは===を使用しているので、タイプ間で強制しないことに注意してください。 substrが文字列を返す場合、入力が正しい場合は、示されているコードが機能するはずです。
追加された 著者 hplbsh,

正確な動作は分かりませんが、 checkValues がnullまたは未定義の場合、その行でブレークすることが予想されます。

0
追加された
上で定義されています。var checkValues = '';
追加された 著者 l--'''''&#,
私は完全に同じ結果を取り除いた
追加された 著者 l--'''''&#,

おそらく checkValue にはトリミングする必要があるスペースがありますか? defaultcheckValue の値を表示します。

default: 
     alert('no match for "' + checkValue + '"');
0
追加された
私はちょうどそれを試みた。マッチしない場合は特に動作しますが、一致する場合は "ケース"には入りません
追加された 著者 l--'''''&#,
私はそれを確認した。それはちょうど "95"や "63"などです
追加された 著者 l--'''''&#,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript