IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

comptabiliser les points d'un questionnaire


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 67
    Points : 41
    Points
    41
    Par défaut comptabiliser les points d'un questionnaire
    bonsoir,

    Je souhaite reprendre un sujet qui a été abondonné dans le passé, en espérant pour voir le résoudre cette fois ci.

    on prendre le code html suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form name="grece"> 
    <p><i>Connaissez-vous la Grèce ? </i></p> 
    <p>Q1. Athènes est la capitale de la Grèce. <br> 
    <input type="radio" name="Cap" value="0"> vrai 
    <input type="radio" name="Cap" value="1"> faux </p> 
    <p>Q2. Lesquelles de ces villes sont situées en Grèce ?<br> 
    <input type="checkbox" name="Ville" value="I"> Istanbul <br> 
    <input type="checkbox" name="Ville" value="Pat"> Patras <br> 
    <input type="checkbox" name="Ville" value="H"> Héraklion <br> 
    <input type="checkbox" name="Ville" value="Pal"> Palerme <br></p> 
    <p><input type="button" value="Réponse" onclick="score()"></p> 
    </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    le code Javascript suivant qui sera appliqué sur le code Html ci dessus:
    function score() { 
    var som ; 
    som = 0 ; 
    if (document.grece.Cap[0].checked == true) som = som +1; 
    if (document.grece.Ville[1].checked == true) som = som +1; 
    if (document.grece.Ville[2].checked == true) som = som +1; 
    if (som==3) 
    { alert('Toutes les réponses sont exactes');} 
    else 
    { alert(som + ' réponse(s) exacte(s) ; réessayez');} 
    }
    je voulais avoir comment je peux modifier ce code de manière le code de la fonction score de manière à ce que le message « Toutes les réponses sont exactes » n'apparaisse que dans le cas où seules les bonnes réponses ont été sélectionnées.

    Dans le cas contraire, afficher un message qui devra indiquer le nombre de réponses exactes, et le nombre de réponses fausses.

    je vous poste des élèments juste après

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    un des membres du forum, en l'occurence Bovino m'a envoyé l'amélioration suivante,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function score() { 
    var som = 0 ; 
    if (document.grece.Cap[0].checked){som++};
    if (document.grece.Ville[1].checked){som++};
    if (document.grece.Ville[2].checked){som++};
    som==3 ? alert('Toutes les réponses sont exactes') : alert(som + ' réponse(s) exacte(s) ; réessayez');
    }
    mais quand je l'ai testé, ça ne change rien, c'est tout comme au début,

    moi j'ai essayé de l'améliorer, mais il ne fonctionne pas, voici mon amélioration:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function score() { 
    var som ; 
    som = 0 ; 
    if (document.grece.Cap[0].checked == true) som = som +1; 
    if (document.grece.Cap[1].checked == true) som = som -1; 
    if (document.grece.Ville[1].checked == true) som = som +1; 
    if (document.grece.Ville[2].checked == true) som = som +1; 
    if (document.grece.Ville[0].checked == true) som = som -1; 
    if (document.grece.Ville[3].checked == true) som = som -1; 
    if (som==3) 
    { alert('Toutes les réponses sont exactes');} 
    else 
    { alert(som + ' réponse(s) exacte(s) ; réessayez');} 
    	if (som==-3) 
    	{ alert('Toutes les réponses sont fausses');} 
    	else 
    	{ alert(som + ' réponse(s) fausse(s) ; réessayez');} 
    }

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    En forçant un choix sur les boutons radio, je ferais quelque chose comme cela (en séparant bien les réponses justes des fausses):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
           <script type="text/javascript">
     
    function score() { 
    var reponsesJustes=0, reponsesFausses=0 ; 
     
    document.grece.Cap[0].checked ? reponsesJustes++ : reponsesFausses++; 
    if (document.grece.Ville[1].checked) reponsesJustes++ ;
    if (document.grece.Ville[2].checked) reponsesJustes++ ; 
    if (document.grece.Ville[0].checked) reponsesFausses++ ; 
    if (document.grece.Ville[3].checked) reponsesFausses++ ;
     
    if (reponsesJustes==3 && reponsesFausses==0){
     alert('Toutes les réponses sont exactes');
    } 
    else 
    	if (reponsesJustes==0 && reponsesFausses>0) 
    	{ alert('Toutes les réponses sont fausses; réessayez');
      } 
    	else 
    	{ alert(reponsesJustes + ' réponse(s) exacte(s) ; réessayez');
    	  if (reponsesFausses>0) 
          alert("et en plus " + reponsesFausses + " réponse(s) fausse(s) !");
      } 
    }   
           </script>
     
      </head>
      <body>
        <form name="grece"> 
    <p><i>Connaissez-vous la Grèce ? </i></p> 
    <p>Q1. Athènes est la capitale de la Grèce. <br> 
    <input type="radio" name="Cap" value="0" checked> vrai 
    <input type="radio" name="Cap" value="1"> faux </p> 
    <p>Q2. Lesquelles de ces villes sont situées en Grèce ?<br> 
    <input type="checkbox" name="Ville" value="I"> Istanbul <br> 
    <input type="checkbox" name="Ville" value="Pat"> Patras <br> 
    <input type="checkbox" name="Ville" value="H"> Héraklion <br> 
    <input type="checkbox" name="Ville" value="Pal"> Palerme <br></p> 
    <p><input type="button" value="Réponse" onclick="score()"></p> 
    </form>
      </body>
    </html>
    ERE

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En complément de la réponse d'emmanuel.remy, la version que je t'ai proposée vérifie que toutes les bonnes réponses sont cochées (je me basais sur une adaptation rapide de ton code) et non pas que seules les bonnes réponses sont cochées, ce que fait sa solution

    Donc, il est toujours préférable de dire ce qui ne marche pas plutôt que ça ne marche pas

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    tout d'abord, merci emmanuel.remy,
    concernant bovino, désolée, je ne voulais en aucun cas remettre en cause tes qualités de Javascript Man, la prochaine fois j'y ferai attention,

    je vais tester le code avec kit HTML,et surtout le comprendre,

    Merci

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    j'ai testé le code, il fonctionne à merveille, c'est exactement ça qu'il fallait,

    par contre y a une chose que je comprend pas.

    je prends les lignes suivantes du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    document.grece.Cap[0].checked ? reponsesJustes++ : reponsesFausses++; 
    if (document.grece.Ville[1].checked) reponsesJustes++ ;
    if (document.grece.Ville[2].checked) reponsesJustes++ ; 
    if (document.grece.Ville[0].checked) reponsesFausses++ ; 
    if (document.grece.Ville[3].checked) reponsesFausses++ ;
    les chiffres qu'il ya entre les crochets, à savoir:
    [0]; [1]; [2]; [0]; [3]

    ils correspondent à quoi?

    j'ai une idée, j'aimerai avoir votre confirmation:

    ils correspondent aux numeros de lignes sur les quelles les réponses se trouvent?

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    En fait,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.grece.Ville
    va ramener tous les éléments du formulaire grece qui on le nom ville. Le résultat est donc un tableau car il y a plusieurs valeurs. Et pour atteindre une case du tableau, on précise son indice. Ca commence à zéro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Ville[0] //première case
    Ville[1] //seconde case
    ...
    Ce qui, d'après votre structures HTML, donne effectivement les "lignes" (visuellement car ce ne sont pas les lignes d'une <table>).

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous,

    Je reviens sur cette question qui m'apprends beaucoup en tant que débutant...

    Admettons qu'on veuille pondérer les réponses justes selon un barème (par exemple pour des enfants). Le résultat ne serait plus x réponses justes mais une valeur des réponses justes.
    Athènes vaudrait 5 points, par exemple.
    Patras 3
    Héraklion 2
    Le total serait de 10/10 donc pour toutes les réponses justes.

    Ma question est sûrement toute bête pour des pros, mais la voici quand même:
    Comment incrémenter reponsesJustes par la valeur de la réponse ?

    D'avance merci.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    soit tu mets dans le value la valeur en point de la bonne réponse, ou tu rajoutes un array avec les valeurs en point de chaque réponse ...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Points : 430
    Points
    430
    Par défaut
    Au lieu d'écrire :

    On écrit :

    pour ajouter 5

    pour ajouter 3

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Merci Tussss (j'ai peut-être oublié quelques "s")

Discussions similaires

  1. visualiser les points d'entrée d'un dll
    Par DenisLorrain dans le forum Windows
    Réponses: 4
    Dernier message: 06/07/2004, 00h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo