javascript SWITCH-instructie niet triggering

Ik heb een switch -instructie in mijn JavaScript op een ASP.NET C# webapplicatie. Ik debug het met FireBug en het is fout: als het de switch bereikt, bestaat het onmiddellijk.

Hier is de code:

$(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;
});

De debugger liet me zien dat checkValue zeker een waarde heeft

Wat doe ik verkeerd?

3
@marc ja het heeft wel de waarden waar ik voor ingesloten ben
toegevoegd de auteur l--'''''&#, de bron
@marc ja de melding verschijnt
toegevoegd de auteur l--'''''&#, de bron
@pimvdb ja ik heb de rest van mijn code gepost
toegevoegd de auteur l--'''''&#, de bron
@marc ben ik verkeerd aan het verklaren van de checkValue? zou het een string in plaats van var moeten zijn?
toegevoegd de auteur l--'''''&#, de bron
@marc begreep het, maar het werkt niet voor de waarden waarvoor het zou moeten werken, bijvoorbeeld 95 of 63
toegevoegd de auteur l--'''''&#, de bron
Geen fouten? Heb je de switch-instructie eigenlijk in je echte code beëindigd?
toegevoegd de auteur pimvdb, de bron
Maar heeft het een van de waarden waarvoor u case 'd heeft? Als u default: alert ('no match'); toevoegt aan uw switch, wordt de melding dan weergegeven?
toegevoegd de auteur Marc B, de bron
Zorg ervoor dat er geen verborgen spaties zijn en wat ook niet in de waarde zit. 63 komt nooit overeen met 63 .
toegevoegd de auteur Marc B, de bron
Nee, maar als de controlewaarde "503" is, zal uw switch niet overeenkomen omdat er geen case 503 is om die waarde vast te leggen.
toegevoegd de auteur Marc B, de bron
Als de waarschuwing verschijnt, is geen van uw case -waarden gevonden.
toegevoegd de auteur Marc B, de bron

3 antwoord

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

Controleer of case parseInt ("95"): ... werkt.

Controleer ook of uw cases beginnen te werken als u een teken aan het nummer toevoegt en controleer vervolgens of:

schakelen (checkValue + 'A')

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

2
toegevoegd
dank u wel dat u een geweldige shabba heeft!
toegevoegd de auteur l--'''''&#, de bron
russisch tot redding !!! hoe zou ik checkValue moeten definiëren?
toegevoegd de auteur l--'''''&#, de bron
Heb je een alert (checkValue); gebruikt vlak voor de switch() - de waarden kloppen?
toegevoegd de auteur Leon, de bron
@Tom: de controlewaarde is geen tekenreeks, het is eigenlijk een getal (!). Zie voorbeeld testcode: jsfiddle.net/3MXtM
toegevoegd de auteur Leon, de bron
@lttlrck: substr geeft waarschijnlijk de string terug, maar omdat die string op een cijfer (dat wil zeggen alle cijfers) lijkt, kan de JS-engine iets funkys doen. JS is niet sterk getypt.
toegevoegd de auteur Leon, de bron
Ik begrijp het niet - checkValue is duidelijk een string.
toegevoegd de auteur Tom, de bron
Waarom zou substr een nummer terugsturen?
toegevoegd de auteur hplbsh, de bron
@Leon Uw voorbeeldcode is defect; isNaN() zal indien mogelijk een string naar een nummer dwingen, het bewijst niet het primitieve. De juiste test is hier: jsfiddle.net/Trmjt/1 en het laat zien dat het een string is.
toegevoegd de auteur hplbsh, de bron
Merk ook op dat de JS-switch === gebruikt, zodat deze niet tussen de typen dwingt. Dus gezien het substraat een tekenreeks retourneert, zou de getoonde code moeten werken als de invoer correct is.
toegevoegd de auteur hplbsh, de bron

Niet zeker van het exacte gedrag, maar als checkValues ​​ null of undefined is, zou ik verwachten dat het op die regel zou breken.

0
toegevoegd
het is hierboven gedefinieerd var checkValues ​​= '';
toegevoegd de auteur l--'''''&#, de bron
ik heb dat volledig nog steeds hetzelfde resultaat verwijderd
toegevoegd de auteur l--'''''&#, de bron

Misschien heeft checkValue een spatie erin die u moet wegsnijden? In je standaard - toon de waarde van checkValue zoals zo, wat het duidelijker zou moeten maken:

default: 
     alert('no match for "' + checkValue + '"');
0
toegevoegd
ik heb dat net geprobeerd. het WERKT specifiek voor de nullen, maar als ER EEN match is, dan gaat het niet in de "case"
toegevoegd de auteur l--'''''&#, de bron
ik heb dat gecontroleerd. het is precies "95" of "63" enz
toegevoegd de auteur l--'''''&#, de bron