-1
votes

Déclaration de commutation dans JS

Je viens d'apprendre à propos de la déclaration de commutation et je l'ai essayé. J'ai quelques questions à ce sujet. D'abord, je veux parler de quelque chose que j'ai essayé qui n'a pas fonctionné. Je ne suis pas sûr de savoir pourquoi cela ne fonctionne pas, surtout parce que cela ne provoque aucun message d'erreur dans la cocade de la console. Ici, il est:

p>

<p id="goonga"></p>

<script>
    var currnc = ""
    var rngab = Math.floor(Math.random() * 10) + 1;

    switch (rngab) {
        case "1":
          currnc = "Yen";
          break;
        case "2":
          currnc = "Dollar";
          break;
        case "3":
          currnc = "Peso";
          break;
        case "4":
          currnc = "Pound";
          break;
        case "5":
          currnc = "Bolivar";
          break;
        case "6":
          currnc = "Rupee";
          break;
        case "7":
          currnc = "Euro";
          break;
        case "8":
          currnc = "Bitcoin";
          break;
        case "9":
          currnc = "Monopoly Money";
          break;
        case "10":
          currnc = "No money for you!";
          break;
        default:
          currnc = "You screwed up."; 
    }

    document.getElementById("goonga").innerHTML = currnc;
</script>


5 commentaires

RNGAB est un nombre ... Vos cas sont des chaînes. Supprimer les citations des cas numériques et travaillera probablement (ou trouvera un nouveau bogue)


Avec ce nombre de cas, un objet hashmap serait plus propre et plus facile à maintenir


RNGAB Le numéro le modifie à la chaîne, cela fonctionnera.


N'oubliez pas de voter à nouveau et acceptez ma réponse comme solution si cela résout votre problème? Merci -


La chose est que je l'ai déjà fait à un autre


3 Réponses :


1
votes

Vous obtenez des numéros de Math Floor CODE> Mais vous utilisez la chaîne comme case code>

Utilisez également .TextContent code> au lieu d'utiliser .innerhtml code> Il n'est pas réincié d'utiliser innerhtml pour modifier le texte de div. p>

En savoir plus sur .textContent code> ICI sur MDN P>

Exécutez le snippet ci-dessous pour le voir fonctionner. p>

p>

<div id="goonga"></div>


4 commentaires

Aussi, ici, le cas «par défaut» ne s'exécute jamais non plus? Alors, c'est quelque chose à considérer comme code mort et à être supprimé? Pardonne mon ignorance


@Santa ce n'est pas de l'espèce qui ne correspond à sa condition - 'oui' la valeur par défaut sera exécutée. C'est juste fonctionne comme un dernier sinon dans n'importe quel si condition.


Je l'ai eu, mais dans ce cas particulier, il tombe toujours sous 'affaire 1 à la case 10' non? Avons-nous encore de garder «défaut»?


@Santa dans ce n'est pas nécessaire mais pas de danger pour y garder une bonne pratique.



1
votes

En réalité, le générateur aléatoire vous renvoie un entier et vous utilisez une chaîne au cas où. Donc, convertissez votre numéro en chaîne ou modifiez les cas en chiffres

p>

<p id="goonga"></p>

<script>

    

    var currnc = ""
    
    var rngab = Math.floor(Math.random() * 10) + 1;

    switch (rngab.toString()){

        case "1":

        currnc = "Yen";

        break;


        case "2":

        currnc = "Dollar";
        
        break;


        case "3":

        currnc = "Peso";
        
        break;


        case "4":

        currnc = "Pound";
        
        break;

        case "5":

        currnc = "Bolivar";
        
        break;

        case "6":

        currnc = "Rupee";
        
        break;

        case "7":

        currnc = "Euro";
        
        break;

        case "8":

        currnc = "Bitcoin";
        
        break;


        case "9":

        currnc = "Monopoly Money";
        
        break;


        case "10":

        currnc = "No money for you!";
        
        break;
       
        default:

        currnc = "You screwed up."; 
    }

    document.getElementById("goonga").innerHTML = currnc;
</script>


0 commentaires

0
votes

Un étagère d'interrupteur évalue d'abord son expression. Il recherche ensuite la première clause de cas dont l'expression est évaluée à la même valeur que le résultat de l'expression d'entrée (à l'aide de la comparaison stricte, ===) et transfère le contrôle de cette clause, exécutant les relevés associés. (Si plusieurs cas correspondent à la valeur fournie, le premier cas qui correspond est sélectionné, même si les cas ne sont pas égaux les uns aux autres.)

plus sur., https://developer.mozilla.org/en-us/docs/web/javascript/reference/stagent/switch p>

p>


0 commentaires