Exercice 12/15

Soit la variable var1 déjà déclarée et qui contient la valeur true ou la valeur false.

Dans le fichier "script.js" :

  • écrivez une structure ternaire;
  • si var1 est true affectez la chaîne "C'est vrai" à result;
  • si var1 est false affectez la chaîne "C'est faux" à result;
  • affichez result avec alert();
  • cliquez sur "Soumettre ma réponse".

Leçon 12/15

Vous venez de voir :

  • la structure conditionnelle if elseif else;
  • le switch;

Le dernier type de structure conditionnelle sont les ternaires. Leur avantage est d'être simple à écrire mais c'est au détriment de la lisibilité.

Une structure ternaire est comme une structure if else mais écrite sur une seule ligne.

Exemple :

var permis = confirm("Avez-vous le permis de conduire ?");
var resultat;
if (permis) // confirm() renvoi un booléen, donc on peut directement tester "permis", pas besoin de mettre "permis == true"
{
    resultat = "Vous pouvez conduire";
}
else
{
    resultat = "Vous ne pouvez pas conduire";
}

Equivalent ternaire :

var permis = confirm("Avez-vous le permis de conduire ?");
var resultat = permis ? "Vous pouvez conduire" : "Vous ne pouvez pas conduire";

Comment ça marche ?

  • la variable resultat récupère le résultat de la ternaire;
  • la variable permis est testée par la ternaire;
  • suivie par ?;
  • suivi par une première valeur puis : et une seconde valeur;

Si permis est vérifiée (évaluée à true) alors la première valeur sera retournée.
Si permis n'est pas vérifiée (évaluée à false) alors la seconde valeur sera retournée.

Commentaires les mieux notés

  • vanessafrancois78930-24

    je ne comprend pas pourquoi il y a dejà cette partie de code var result; /* Votre ternaire */ result = /* ici */; alert(result);

  • vanessafrancois78930-24

    il dit erreur interne pouvez vous me dire si mon code est bon que je sache si j'ai bien compris svpvar var1 = true; var result; var result=true?"C'est vrai":"C'est faux"; result =true?"C'est vrai":"C'est faux"; alert(result); merci

  • mram Administrateur

    Il manque la majuscule "c'est" > "C'est" , et il y a une faute d'orthographe "faut" > "faux" ...

  • mram Administrateur

    Pas besoin de mettre === "true", c'est implicite.

62 Commentaires

  • mram

    mram Administrateur

    Il manque la majuscule "c'est" > "C'est" , et il y a une faute d'orthographe "faut" > "faux" ...

    le 02/08/2016 à 23h46

  • mram

    mram Administrateur

    Pas besoin de mettre === "true", c'est implicite.

    le 15/01/2017 à 23h22

  • patricerameaux

    patricerameaux

    avez-vous bien déclaré les variables demandées : pourquoi déclarer var1 alors qu'elle existe déjà : c'est le seul ecueuil que je vois à mon code merci de m'éclairer

    le 07/10/2016 à 11h07

  • yarkagone

    yarkagone

    Voilà mon code....var result= var1==="true" ? "C'est vrai" : "C'est faux"; alert(result); quelle est l' erreur ? Merci.

    le 12/01/2017 à 19h33

  • v.redois

    v.redois

    "AVEZ-VOUS BIEN AFFECTÉ LE RÉSULTAT DE LA TERNAIRE À "RESULT" ?"

    le 22/05/2016 à 13h15

  • bsmeyers84

    bsmeyers84

    AVEZ-VOUS BIEN ECRIT LA STRUCTURE TERNAIRE? N'OUBLIEZ PAS UN ESPACE AUTOUR DE ? ET DE :

    le 02/08/2016 à 18h09

  • mram

    mram Administrateur

    C'est corrigé et ce sera mis à jour prochainement :)

    le 22/05/2016 à 13h15

  • mram

    mram Administrateur

    Il ne s'agit pas de la variable "var1", mais de votre variable "resultat" alors qu'il est demandé de déclarer la variable "result".

    le 10/10/2016 à 13h02

  • paris.laureline

    paris.laureline

    Bonjour ,Bonsoir : depuis un chouia de temps je but sur cet exo, j'ai lu , lu et relu, modifié mainte foix le code en anticipant si toute fois il n'y avait pas des mal formations dans les instructions, rien n'a faire ( après c'est peut-être la fatigue ) mais dans tous les cas je n'arrive pas à avancer: Mon code initial ---> var result = confirm("Es-tu bête ?"); // on lit le désespoir ici quand même var resultat = result ? "C'est vrai" : "C'est faux"; alert(result); <----- qui pour le coup ne fait pas bien fonctionner mon code quand j'éxécute le JS puisqu'il m'affiche :" an embedded page on this webpage says : Es-tu bète? " puis " an embedded page on this webpage says : true ( je suppose qu'apres avoir affecter c'est vrai ou c'est faux que ce n'est pas pour rien, de ce coup là j'ai modifier le code par ----> var result = confirm("Es-tu bête ?"); var resultat = result ? "C'est vrai" : "C'est faux"; alert(resultat); <------ qui lui pour le coup me fait apparaitre mon C'est vrai qui suggere que ce soit bon , non ? mais qui ne respecte pas la consigne étant d'appliquer a alert result ? Ou du moins je ne l'avais pas compris ainsi. Et pourtant je me retrouve avec : AVEZ-VOUS BIEN ECRIT LA STRUCTURE TERNAIRE? N'OUBLIEZ PAS UN ESPACE AUTOUR DE ? ET DE : Tout cela pour finaliser avec la question : Mais où est donc mon erreur :/ ? J'aimerais comprendre.( j'ai vérifié les différents espaces possible rien ne passe , que ce soit autour de ? autour de : ou si il y en avait de trop, et même en lisant les commentaire, rien.(d'ailleurs je ne vois pas où interviendrait var1 comme dis plus haut car au final un message d'erreur nous empêche de le nommer)

    le 26/05/2017 à 01h03

  • paris.laureline

    paris.laureline

    Hmmm frustration extrême : j'ai tenté une dernière tentative en ajoutant une égalité et c'est passé, pardon du dérangement. ( La fatigue sans doute )

    le 26/05/2017 à 01h06

  • pisi.jerome

    pisi.jerome

    "Avez-vous bien écrit la structure ternaire ? N'oubliez pas un espace autour de ? et de : " Dans quel ordre le script de l'exercice rapporte-t-il les erreurs ? Celles concernant la forme viennent-elles en premières ou en dernières ?

    le 24/10/2016 à 18h33

  • mram

    mram Administrateur

    Alors ligne 2 "var resultat = " ne sert à rien. On ne demande pas d'utiliser la variable "resultat" mais d'affecter le résultat à la variable "result".

    le 29/05/2017 à 15h28

  • pascal-ds

    pascal-ds

    je sèche.. j'ai également le message "avez-vous bien écrit...". j'ai vérifié les espaces avant après la ponctuation et les majuscules... tout y est. En revanche, je m'embrouille avec les comparateurs pour vérifier si var1 est true ou false. Quand j'écris var1 = "true", Hal me renvoie "C'est vrai". En revanche, je pensais que le comparateur c'était plutôt ===. J'ai essayé plusieurs combinaisons avec ==, ===, les guillemets autour de true...Non seulement, Hal ne me renvoie plus de réponse, mais j'ai toujours le même message d'erreur. so what ?

    le 24/08/2016 à 11h17

  • pascal-ds

    pascal-ds

    J'ai écrit une réponse qui est validée... mais j'ai du mal à en comprendre l'esprit.

    le 24/08/2016 à 11h44

  • mram

    mram Administrateur

    C'est votre dernier code qui est bon. Les ternaires sont très peu utilisées. Personnellement, je préfère les structures if else, plus lisibles. Mais il faut savoir que ça existe. Et comment ça marche : en gros c'est ça fonctionne comme un if else sur une seule ligne et avec une syntaxe allégée.

    le 24/08/2016 à 13h49

  • mram

    mram Administrateur

    Il n'y a pas besoin d'antislash dans votre cas.

    le 25/10/2016 à 21h28

  • brett.anna

    brett.anna

    Bonjour, Voici mon script : var result = var1 ? "C\'est vrai" : "C\'est faux"; alert(result); Je n'arrive pas à trouver mon erreur. Pouvez vous me donner un index ? Cordialement,

    le 24/02/2017 à 18h17

  • mram

    mram Administrateur

    Les anti-slash ne sont pas nécessaires ici...

    le 25/02/2017 à 00h05

  • pisi.jerome

    pisi.jerome

    Merci mais, j'ai toujours le même message d'erreur. :'(

    le 27/10/2016 à 10h44

  • mram

    mram Administrateur

    Ligne 1 il faut utiliser "var1" dans la structure ternaire et non "result".

    le 29/10/2016 à 16h57

  • deligans

    deligans

    je n'arrive pas à valider mon code pouvez vous m'aider svp ? var result = var1? " C'est vrai" : "C'est faux" ; alert(result);

    le 27/10/2017 à 21h29

  • mram

    mram Administrateur

    Bonjour, la première ligne "var var1" est inutile. Le reste du code est correct.

    le 30/10/2017 à 01h26

  • valerie.cohen0-81

    valerie.cohen0-81

    Bonjour, ou est lerreur? var result = var1 ? "C'est vrai" : "C'est faux" ; alert(result);

    le 05/04/2018 à 20h01

  • mram

    mram Administrateur

    Bonjour, une structure ternaire s'écrit sur une seule ligne.

    le 09/04/2018 à 18h42

  • Fred Boin

    Fred Boin

    Je ne comprends pas mon erreur : var result = var1 ? "C'est vrai" : "C'est faux" ; alert(result);

    le 03/10/2017 à 15h21

  • mram

    mram Administrateur

    Bonjour, le point-virgule était mal placé à la fin de la ligne. Là c'est bon.

    le 03/10/2017 à 22h26

  • yoan14200-10

    yoan14200-10

    Mon code : var result = var1 ? "C'est vrai ?" : "C'est faux"; alert(result); Erreur(s) : Avez-vous bien écrit la structure ternaire ? N'oubliez pas un espace autour de ? et de :

    le 16/06/2018 à 23h50

  • michele.malerba

    michele.malerba

    Pourquoi mon code est faux?: var result = confirm("Es-tu sur Mars ?"); var resultat = result ? "C'est vrai" : "C'est faux"; alert(result);

    le 27/08/2017 à 20h40

  • mram

    mram Administrateur

    Bonjour, il ne fallait pas utiliser confirm() ce n'est pas demandé. Là votre code est correct.

    le 30/08/2017 à 14h01

  • michele.malerba

    michele.malerba

    Je viens de trouver:var result = var1 ? "C'est vrai" : "C'est faux"; alert(result); cet exercice fut d'une immense frustration, je pense qu'il faudrait le changer...

    le 28/08/2017 à 10h29

  • mram

    mram Administrateur

    Bonjour, il ne fallait pas ajouter de confirm() ce n'était pas demandé. Essayez de suivre les instructions du mieux possible. Là vous vous êtes ajouté une difficulté inutile.

    le 30/08/2017 à 14h05

  • guannelmoise-31

    guannelmoise-31

    je vous remercie

    le 30/10/2018 à 11h30

  • othman.assas

    othman.assas

    Bonjour, voici mon code qui ne fonctionne pas. Où est l'erreur svp ? var result = confirm("Es-tu bête ?"); var resultat = result ? "C'est vrai" : "C'est faux"; alert(resultat);

    le 06/08/2017 à 11h26

  • mram

    mram Administrateur

    Bonjour, la ligne 1 est inutile, ce n'est pas demandé. Ensuite il fuat utiliser la variable "result" et non "resultat".

    le 09/08/2017 à 11h00

  • aymoh-14

    aymoh-14

    de l'aide s'il vous plait mram

    le 12/12/2018 à 12h25

  • meriam

    meriam Administrateur

    Déclarer la variable result dans une ligne apart, comme indiqué dans le code de départ.

    le 12/12/2018 à 12h31

  • lauraquat

    lauraquat

    Merci Meriam!

    le 11/03/2019 à 20h35

  • nkeshimanabrice-37

    nkeshimanabrice-37

    Merci meriam j'ai vu l'erreur et je l'ai bien corrigé...

    le 26/03/2019 à 08h51

  • vanessafrancois78930-24

    vanessafrancois78930-24

    j'ai trouve merci

    le 19/12/2018 à 17h01

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>La structure ternaire</title> <script src="script.js"></script> </head> <body> </body> </html>
/* Vous pouvez modifier la valeur de la variable pour vos tests */ var var1 = true; var result; /* Votre ternaire */ result = /* ici */; alert(result);