2017-09-22 2 views
1

J'apprends JavaScript avec un système de niveau supérieur très simple et basique par un bouton utilisant une table XP pour définir une variable nommée Level et l'imprimer.Comment utiliser le commutateur pour comparer les valeurs entre les valeurs

Comment puis-je utiliser l'instruction switch pour comparer des nombres compris entre 10 et 20 comme exemple, et renvoyer une variable nommée Level la valeur 2 (Nv 2)?

J'ai essayé d'utiliser "case 10 ... 20" (3 points comme dans une autre langue) mais cela n'a pas fonctionné!

J'ai essayé d'utiliser l'instruction if, mais cela ne fonctionne pas correctement. :/

var Exp = 1; 
var Level = 1; 

function MaisExp() 
{ 
    Exp++; 
    document.getElementById("console").innerHTML = "+1 XP! | "+" Total: "+Exp+" xp points"; 
    VerLevel(); 
} 

function VerLevel() 
{ 
    switch(Exp) 
    { 
     case 0...10: ***< --- dots didn't work.*** 
     { 
      Level=1; 
     } 
     case 20: 
     { 
      Level=2; 
     } 
     case 40: 
     { 
      Level=1; 
     } 
     case 80: 
     { 
      Level=1; 
     } 
    } 
    document.getElementById("tela").innerHTML = Level; 
} 
+0

Avez-vous des niveaux différents de 1 ou 2? –

+1

Vous devriez utiliser 'if-else' pour les intervalles –

+0

@LeonardoAlvesMachado voulez-vous dire:' switch (exp)> case> if-else() '? @Nina Oui, niveaux 1 à 5. –

Répondre

1

Vous pouvez utiliser si des déclarations comme celle-ci:

if(Exp >= 0 && Exp <= 10) 
{ 
} 
else if(Exp <= 20) 
{ 
} 
else if(Exp <= 30) etc... 
+0

Incroyable, fonctionne bien! Je ne me souviens pas d'utiliser && lors de l'utilisation de l'instruction IF-ELSE! Merci à tous, les gars! –

0

Même si vous avez déjà une valeur par défaut de 1, vous pouvez le prendre dans la fonction et vérifier onle la condition pour level = 2.

function VerLevel() { 
    Level = 1; 
    if (Exp === 20) { 
     Level = 2; 
    } 
    document.getElementById("tela").innerHTML = Level; 
} 

Je propose de changer le style de la variable et fonction de commencer par les lettres minuscules, parce que les fonctions avec des lettres majuscules désigne les fonctions instanciables/constructeur, qui peuvent être des utilisations avec new operator.

1

L'instruction case ne fonctionne pas avec plusieurs validations, elle ne peut en traiter qu'une par cas. Cependant, vous pouvez lister plusieurs cas, par exemple:

switch(age){ 
    case 0:// If age is 0, it would enter here, since there is no "break;" it goes down to 1 
    case 1:// Same as above 
    case 2:// Same as above 
    case 3:// Since this one has a break, this code is executed and then the switch terminates 
    console.log('This toy is not right for this person'); 
    break; 
    default:// This special case fires if age doesn't match any of the other cases, or none of the other cases broke the flow 
    console.log('This toy is good for this person'); 
} 

Ainsi, dans votre code, il devrait être quelque chose comme:

switch(Exp) 
{ 
    case 0: 
    case 1: 
    case 2: 
    case 3: 
    case 4: 
    case 5: 
    case 6: 
    case 7: 
    case 8: 
    case 9: 
    case 10: 
     Level=1; 
     break; 
    case 20: 
     Level=2; 
     break; 
    case 40: 
     Level=1; 
     break; 
    case 80: 
     Level=1; 
     break; 
} 

Mais, puisque vous voulez tous être de niveau 1, mais 20 , vous pouvez également utiliser le cas default, comme ceci:

switch(Exp) 
{ 
    case 20: 
     Level=2; 
     break; 
    default: 
     Level=1; 
}