Opérateur logique OU dans un JavaScript cas de déclaration

J'ai deux fichiers jQuery - one [newForms_jQuery.js] d'être appelé userNewItemForm et adminNewItemForm, un autre [editForms_jQuery.js] d'être appelé userEditItemForm et adminEditItemForm.

J'aimerais combiner ces deux fichiers en un seul fichier jQuery et j'ai voulu utiliser une instruction case.

J'ai trouvé que la syntaxe serait

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}

Je reçois le nom du fichier à différencier de la tva Nouvelles et de Modifier les formes et ensuite de faire quelque chose sur cette base. Ma première pensée a été d'utiliser la logique OU dans mon cas, tels que:

case (url="userNewItemForm.aspx") || (url="adminNewItemForm.aspx"):
//do something
case (url="userEditItemForm.aspx") || (url="adminEditItemForm.aspx"):
//do soemthing else

Cependant, alors j'ai trouvé https://stackoverflow.com/a/1806279/429694. Donc, j'ai révisé mon script:

switch(url)
{
case "userNewItemForm.aspx": //intentionally left blank to fall through
case "adminNewItemForm.aspx":
//do new record stuff
break;
case "userEditItemForm.aspx": //intentionally left blank to fall through
case "adminEditItemForm.aspx":
//do edit record stuff
break; 
default:
alert(url);
}

Cela semblait fonctionner, cependant, sur d'autres tests, j'ai trouvé que le cas des états qui n'ont pas de pause; ne tombent pas à travers comme je l'avais prévu. Des conseils?

UPDATE1:
Suivant @jbabey les conseils, j'ai révisé mon script pour la suite, j'ai pensé que c'résolu mon problème, cependant, il n'est pas tout à fait. Il semble que lorsque j'ouvre l'url qui est dans la 2ème partie de l'instruction OU, il ne ramasse pas le nom, et exécute le cas par défaut à la place.

Voici mon code actuel

    function getFileName() 
    {
    url = document.location.href; //gets the full url. URL is global var after function called
    url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); //this removes the anchor at the end, if there is one
    url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); //this removes the query after the file name, if there is one
    url = url.substring(url.lastIndexOf("/") + 1, url.length); //this removes everything before the last slash in the path
    return url; //returns filename
    }
$(document).ready(function(){  
     getFileName();
    switch (url)
    {
            case ("eacrfNew_jQuery.aspx" || "newItem_jQuery.aspx"):
              //do new record stuff
            break;
            case ("eacrfEdit_jQuery.aspx" || "editItem_jQuery.aspx"):
              //do edit record stuff 
            break; //close edit record stuff
            default: 
              //which file did it open?    
              alert(url);
    } 
   }); //close doc.ready

DERNIÈRE MISE À JOUR:

VOUS NE pouvez pas UTILISER les OPÉRATEURS LOGIQUES DANS l'AFFAIRE ÉTATS au Lieu de cela, vous devez utiliser des if...else Voir http://www.naveen.com.au/javascript/jquery/switch-case-in-jquery/319 pour plus de détails.

function getFileName() 
{
url = document.location.href; //gets the full url into global var
return url; //returns filename
}

function clearID()
{
 //clears field values 
}

$(window).load(function(){  
   $(document).ready(function(){  
     getFileName();
     if ((url === "eacrfNew_jQuery.aspx") || (url === "newItem_jQuery.aspx")) {
        //do new record stuff
     } else if ((url === "eacrfEdit_jQuery.aspx") || (url === "editItem_jQuery.aspx")) {
        //do edit record stuff  
     } else {   
       ///default: which file did it open?
       alert(url);
     }
   }); //close doc.ready 
}); //close window.load 
  • Qu'avez-vous vous attendez. Ce qui s'est passé?
  • Je m'attendais si l'URL a été userNewItemForm, qu'il exécute le "nouveau record trucs" ci-dessous adminNewItemForm
InformationsquelleAutor jg100309 | 2012-01-04