Calculer Le score d'un QCM

Signaler
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
-
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
-
Bonjour,

Comme l'indique le titre je voudrais avoir un bouton score en bas de ma page m'indiquant le score du QCM 1 réponse juste vaut 3 point et une réponse fausse voit -1 point et qu'une seule réponse par question est autorisée

(Je sais q'u'es Javascript on peut voir les réponses, mais c'est un projet scolaire, donc menfou :))



LE HTML


<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>QCM NSI</title>
<script language="javascript">
</script>
<link rel="stylesheet" href="styleqcm.css">
</head>
<body>

<form name="qcm">

<center><h1><mark><u>QCM NSI</u></mark></h1></center>

<h3>Bonjour et bienvenue dans le meilleur QCM d'NSI au monde, constitué de 10 questions dont UNE seule réponse par question est acceptée, sinon la réponse à la question sera considérée comme fausse et ne vous apportera AUCUN point. </h3>

<center><h1> <mark> <label id="LblClignotant">Good Luck :)</label> </mark> </h1></center>



<strong>Question 1 </strong>:
On donne ci-dessous un programme écrit en python :

<p  id = "prg1"|>
a = 10<BR>
for index in range(4):<BR>
 a = a + index<BR>
print(a)<BR>
</p>

Quelle valeur est affichée après exécution ?
<ul>
     <li><input type="checkbox"  name="question1" value="a"> 12.
     <li><input type="checkbox"  name="question1" value="b"> 14.
     <li><input type="checkbox"  name="question1" value="c"> 16.
     <li><input type="checkbox"  name="question1" value="d"> 13.
</ul>

  <input type="button" value="correction" onclick="correction1()">
  <input type="button" value="corrigé" onclick="corrige1()">
<BR>
<BR>
<BR>
<strong>Question 2 </strong> :
en quelle année le langage python est-il apparu ?
<ul>
     <li><input type="checkbox" name="question2" value="a"> 1780.
     <li><input type="checkbox"  name="question2" value="b"> 1930.
     <li><input type="checkbox"  name="question2" value="c"> 2002.
     <li><input type="checkbox"  name="question2" value="d"> 1989.
</ul>

  <input type="button" value="correction" onclick="correction2()">
  <input type="button" value="corrigé" onclick="corrige2()">
<BR>
<BR>
<BR>
<strong>Question 3 :</strong>
La langage HTML est un langage de :
<ul>
     <li><input type="checkbox"   name="question3" value="a"> Programmation.
     <li><input type="checkbox"  name="question3" value="b"> Ecriture.
     <li><input type="checkbox"  name="question3" value="c"> Description.
     <li><input type="checkbox"  name="question3" value="d"> Localisation.
</ul>

  <input type="button" value="correction" onclick="correction3()">
  <input type="button" value="corrigé" onclick="corrige3()">
<BR>
<BR>
<BR>
<strong>Question 4 :</strong>
En quelle année le langage HTML est-il apparu ? :
<ul>
     <li><input type="checkbox"  name="question4" value="a"> 1990.
     <li><input type="checkbox"  name="question4" value="b"> 1969.
     <li><input type="checkbox"  name="question4" value="c"> 2020.
     <li><input type="checkbox" name="question4" value="d"> 1991.
</ul>

  <input type="button" value="correction" onclick="correction4()">
  <input type="button" value="corrigé" onclick="corrige4()">
<BR>
<BR>
<BR>
<strong>Question 5 :</strong>
L'inventeur du langage Python est :
<ul>
     <li><input type="checkbox"  name="question5" value="a"> Elon Musk.
     <li><input type="checkbox"  name="question5" value="b"> Guido van Rossum.
     <li><input type="checkbox"  name="question5" value="c"> Yoshiro Nakamatsu.
     <li><input type="checkbox" name="question5" value="d"> Gollum Ofthering.
</ul>
  <input type="button" value="correction" onclick="correction5()">
  <input type="button" value="corrigé" onclick="corrige5()">
<BR>
<BR>
<BR>
<strong>Question 6 :</strong>
Cette table de vérité est le table de :
<BR>
<p  id = "prg1"|>
   
  <span id='marge'/>0  0  0<BR>
  <span id='marge'/>0  1  1<BR>
  <span id='marge'/>1  0  1<BR>
  <span id='marge'/>1  1  0<BR>

</p>


<ul>
     <li><input type="checkbox"  name="question6" value="a"> AND.
     <li><input type="checkbox"  name="question6" value="b"> XOR.
     <li><input type="checkbox"  name="question6" value="c"> OR.
     <li><input type="checkbox"  name="question6" value="d"> NON A.
</ul>
  <input type="button" value="correction" onclick="correction6()">
  <input type="button" value="corrigé" onclick="corrige6()">
<BR>
<BR>
<BR>
<strong>Question 7 :</strong>
Quel est le nom du programme dans python qui sert à dessiner des formes géométriques ? :
<ul>
     <li><input type="checkbox"  name="question7" value="a"> Spyder
     <li><input type="checkbox"  name="question7" value="b"> Twitter
     <li><input type="checkbox"  name="question7" value="c"> Turtle
     <li><input type="checkbox"  name="question7" value="d"> Shark
</ul>
  <input type="button" value="correction" onclick="correction7()">
  <input type="button" value="corrigé" onclick="corrige7()">
<BR>
<BR>
<BR>
<strong>Question 8 :</strong>
Comment s'écrit le nombre 671 en binaire ? :
<ul>
     <li><input type="checkbox"  name="question8" value="a"> 1
     <li><input type="checkbox"  name="question8" value="b"> 1010100001
     <li><input type="checkbox"  name="question8" value="c"> 1010011110
     <li><input type="checkbox"  name="question8" value="d"> 1010011111
</ul>
  <input type="button" value="correction" onclick="correction8()">
  <input type="button" value="corrigé" onclick="corrige8()">
<BR>
<BR>
<BR>
<strong>Question 9 : </strong>
Ceci est un programme pour échanger les valeurs de deux variables, completez les petits pointillés :

<p  id = "prg1"|>

A = input("Donner la valuer de A:")<BR>
B = input("Donner la valeur de B:")<BR>

<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>

print("A = : " , A)<BR>
print("B = : " , B) <BR>
  

</p>
<ul>
<span id='marge2'/>A = C
     <li><input type="checkbox" name="question9" value="a"> B = C<BR> <span id='marge2'/>A = C<BR>
<BR>
<span id='marge2'/>C = A     

     <li><input type="checkbox"  name="question9" value="b"> A = B<BR> <span id='marge2'/>B = C<BR>
<BR>
<span id='marge2'/>A = A     
     <li><input type="checkbox"  name="question9" value="c"> B = B<BR> <span id='marge2'/>C = C<BR>
<BR>     
<span id='marge2'/>C = A     
     <li><input type="checkbox"  name="question9" value="d"> A = B<BR> <span id='marge2'/>C = A
</ul>
  <input type="button" value="correction" onclick="correction9()">
  <input type="button" value="corrigé" onclick="corrige9()">
<BR>
<BR>
<BR>
<strong>Question 10 : </strong>
L'intensité de chaque couleur est donnée par un entier compris entre :
<ul>
     <li><input type="checkbox"  name="question10" value="a"> 0 et 256
     <li><input type="checkbox"  name="question10" value="b"> 0 et 258
     <li><input type="checkbox"  name="question10" value="c"> 0 et 255
     <li><input type="checkbox"  name="question10" value="d"> 12 et 12.1
</ul>
  <input type="button" value="correction" onclick="correction10()">
  <input type="button" value="corrigé" onclick="corrige10()">
<BR>
<BR>
<BR>

Pour  <strong>TOUT</strong>  effacer <input type="reset" value="effacer">
<BR>
<BR>
<input type="button" value="Score" onclick="getScore()">
</form>
<script src="scriptqcm.js"></script>




</body>
</html>



LE SCRIPT

function correction1() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question1")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question1")[2].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}



function correction2() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question2")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question2")[3].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}



function correction3() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question3")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question3")[2].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}



function correction4() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question4")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question4")[0].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}


function correction5() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question5")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question5")[1].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}



function correction6() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question6")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question6")[1].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}


function correction7() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question7")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question7")[2].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}


function correction8() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question8")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question8")[3].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}


function correction9() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question9")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question9")[1].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}

function correction10() {
var s = 0;
for (index=0; index <=3;index++) {
s = s + document.getElementsByName("question10")[index].checked;
}
console.log(s);
if (s == 0) {
alert("vous n'avez pas répondu, vous n'obtenez aucun point");
}
else if (s ==1) {
if  (document.getElementsByName("question10")[2].checked) {
alert("bravo, c'est une bonne réponse, vous obtenez 3 points");
}
else { alert (" C'est une réponse fausse, vous perdez 1 point");
}
}
else {
alert("vous avez coché "+s+" réponses alors qu'il n'y a qu'une bonne réponse, vous perdez 1 point");
}
}





var signe = -1;
var clignotementFading = function(){
var obj = document.getElementById('LblClignotant');
if (obj.style.opacity >= 0.96){
signe = -1;
}
if (obj.style.opacity <= 0.04){
signe = 1;
}
obj.style.opacity = (obj.style.opacity * 1) + (signe * 0.04);
};

periode = setInterval(clignotementFading, 85 );






Merci d'avance

4 réponses

Bonjour
avez vous une question? où est ce que vous bloquez?

Je vous conseille de virer tout les 'alert' qui est une fonction bloquante indiquant une alerte et non le fonctionnement normal du programme par exemple en écrivant directement dans la page(évitez aussi document.write bien sûr).

Sinon pour additionner des valeurs en Javascript et en programmation en général vous devez utiliser le symbole '+', du moment que vos variables sont bien identifiées de 'type' numérique.

Autre chose dans un formulaire si le script doit fonctionner dans la page vous devez désactiver le comportement du bouton d'envoi(submit) par défaut qui redirige(voir attribut method) vers une autre page où la même ce qui reviens à supprimer toute présente de script(celui ci étant effectué à nouveau) et bien sûr supprimer toutes les valeurs indiquées par le formulaire.
à moins de les traiter séparément(envoi vers une autre page affichant les résultats ou traitement serveur PHP etc...) le formulaire ne doit pas être validé(ce qui envoit les données des champs vers une autre page).


En regardant votre script je me rends compte que vous n'avez pas vraiment compris les fonctions.
Vous écrivez 10 fonction correction de façon identique(quelle perte de temps) si ce n'est pour un détail.
Ne serais il pas plus simple d'utiliser un paramètre et une seule fonction à la place des 10 que vous avez?

Bref vous n'avez pas fait grand chose et ce que vous avez est plutôt mal fait, recommencer en suivant par exemple les explications du cours ou simplement en apprenant comment marchent les fonction s en JavaScript.
Messages postés
60664
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
19 janvier 2020
5179
Bonjour,

Merci de saisir ton code en lui attribuant la couleur syntaxique et la forme correcte avec le bouton
<>
.
Chris 94
Messages postés
60664
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
19 janvier 2020
5179 > Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Qu'ai-je écrit ?
                                        ...avec le bouton
<>
.
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> Chris 94
Messages postés
60664
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
19 janvier 2020

Je ne connais pas ces boutons, vous parlez des guillemets <> ?
Chris 94
Messages postés
60664
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
19 janvier 2020
5179 > Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Regarde, quand tu crées ou édite un message, en haut de la fenêtre d'édition...
Chris 94
Messages postés
60664
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
19 janvier 2020
5179 > Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Tu peux aussi choisir la mise en forme et la couleur syntaxique... A lire :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>QCM NSI</title>
<script language="javascript">
</script>
<link rel="stylesheet" href="styleqcm.css">
</head>
<body>

<form name="qcm">

<center><h1><mark><u>QCM NSI</u></mark></h1></center>

<h3>Bonjour et bienvenue dans le meilleur QCM d'NSI au monde, constitué de 10 questions dont UNE seule réponse par question est acceptée, sinon la réponse à la question sera considérée comme fausse et ne vous apportera AUCUN point. </h3>

<center><h1> <mark> <label id="LblClignotant">Good Luck :)</label> </mark> </h1></center>



<strong>Question 1 </strong>:
On donne ci-dessous un programme écrit en python :

<p id = "prg1"|>
a = 10<BR>
for index in range(4):<BR>
 a = a + index<BR>
print(a)<BR>
</p>

Quelle valeur est affichée après exécution ?
<ul>
<li><input type="checkbox" name="question1" value="a"> 12.
<li><input type="checkbox" name="question1" value="b"> 14.
<li><input type="checkbox" name="question1" value="c"> 16.
<li><input type="checkbox" name="question1" value="d"> 13.
</ul>

<input type="button" value="correction" onclick="correction1()">
<input type="button" value="corrigé" onclick="corrige1()">
<BR>
<BR>
<BR>
<strong>Question 2 </strong> :
en quelle année le langage python est-il apparu ?
<ul>
<li><input type="checkbox" name="question2" value="a"> 1780.
<li><input type="checkbox" name="question2" value="b"> 1930.
<li><input type="checkbox" name="question2" value="c"> 2002.
<li><input type="checkbox" name="question2" value="d"> 1989.
</ul>

<input type="button" value="correction" onclick="correction2()">
<input type="button" value="corrigé" onclick="corrige2()">
<BR>
<BR>
<BR>
<strong>Question 3 :</strong>
La langage HTML est un langage de :
<ul>
<li><input type="checkbox" name="question3" value="a"> Programmation.
<li><input type="checkbox" name="question3" value="b"> Ecriture.
<li><input type="checkbox" name="question3" value="c"> Description.
<li><input type="checkbox" name="question3" value="d"> Localisation.
</ul>

<input type="button" value="correction" onclick="correction3()">
<input type="button" value="corrigé" onclick="corrige3()">
<BR>
<BR>
<BR>
<strong>Question 4 :</strong>
En quelle année le langage HTML est-il apparu ? :
<ul>
<li><input type="checkbox" name="question4" value="a"> 1990.
<li><input type="checkbox" name="question4" value="b"> 1969.
<li><input type="checkbox" name="question4" value="c"> 2020.
<li><input type="checkbox" name="question4" value="d"> 1991.
</ul>

<input type="button" value="correction" onclick="correction4()">
<input type="button" value="corrigé" onclick="corrige4()">
<BR>
<BR>
<BR>
<strong>Question 5 :</strong>
L'inventeur du langage Python est :
<ul>
<li><input type="checkbox" name="question5" value="a"> Elon Musk.
<li><input type="checkbox" name="question5" value="b"> Guido van Rossum.
<li><input type="checkbox" name="question5" value="c"> Yoshiro Nakamatsu.
<li><input type="checkbox" name="question5" value="d"> Gollum Ofthering.
</ul>
<input type="button" value="correction" onclick="correction5()">
<input type="button" value="corrigé" onclick="corrige5()">
<BR>
<BR>
<BR>
<strong>Question 6 :</strong>
Cette table de vérité est le table de :
<BR>
<p id = "prg1"|>

<span id='marge'/>0 0 0<BR>
<span id='marge'/>0 1 1<BR>
<span id='marge'/>1 0 1<BR>
<span id='marge'/>1 1 0<BR>

</p>


<ul>
<li><input type="checkbox" name="question6" value="a"> AND.
<li><input type="checkbox" name="question6" value="b"> XOR.
<li><input type="checkbox" name="question6" value="c"> OR.
<li><input type="checkbox" name="question6" value="d"> NON A.
</ul>
<input type="button" value="correction" onclick="correction6()">
<input type="button" value="corrigé" onclick="corrige6()">
<BR>
<BR>
<BR>
<strong>Question 7 :</strong>
Quel est le nom du programme dans python qui sert à dessiner des formes géométriques ? :
<ul>
<li><input type="checkbox" name="question7" value="a"> Spyder
<li><input type="checkbox" name="question7" value="b"> Twitter
<li><input type="checkbox" name="question7" value="c"> Turtle
<li><input type="checkbox" name="question7" value="d"> Shark
</ul>
<input type="button" value="correction" onclick="correction7()">
<input type="button" value="corrigé" onclick="corrige7()">
<BR>
<BR>
<BR>
<strong>Question 8 :</strong>
Comment s'écrit le nombre 671 en binaire ? :
<ul>
<li><input type="checkbox" name="question8" value="a"> 1
<li><input type="checkbox" name="question8" value="b"> 1010100001
<li><input type="checkbox" name="question8" value="c"> 1010011110
<li><input type="checkbox" name="question8" value="d"> 1010011111
</ul>
<input type="button" value="correction" onclick="correction8()">
<input type="button" value="corrigé" onclick="corrige8()">
<BR>
<BR>
<BR>
<strong>Question 9 : </strong>
Ceci est un programme pour échanger les valeurs de deux variables, completez les petits pointillés :

<p id = "prg1"|>

A = input("Donner la valuer de A:")<BR>
B = input("Donner la valeur de B:")<BR>

<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>

print("A = : " , A)<BR>
print("B = : " , B) <BR>


</p>
<ul>
<span id='marge2'/>A = C
<li><input type="checkbox" name="question9" value="a"> B = C<BR> <span id='marge2'/>A = C<BR>
<BR>
<span id='marge2'/>C = A

<li><input type="checkbox" name="question9" value="b"> A = B<BR> <span id='marge2'/>B = C<BR>
<BR>
<span id='marge2'/>A = A
<li><input type="checkbox" name="question9" value="c"> B = B<BR> <span id='marge2'/>C = C<BR>
<BR>
<span id='marge2'/>C = A
<li><input type="checkbox" name="question9" value="d"> A = B<BR> <span id='marge2'/>C = A
</ul>
<input type="button" value="correction" onclick="correction9()">
<input type="button" value="corrigé" onclick="corrige9()">
<BR>
<BR>
<BR>
<strong>Question 10 : </strong>
L'intensité de chaque couleur est donnée par un entier compris entre :
<ul>
<li><input type="checkbox" name="question10" value="a"> 0 et 256
<li><input type="checkbox" name="question10" value="b"> 0 et 258
<li><input type="checkbox" name="question10" value="c"> 0 et 255
<li><input type="checkbox" name="question10" value="d"> 12 et 12.1
</ul>
<input type="button" value="correction" onclick="correction10()">
<input type="button" value="corrigé" onclick="corrige10()">
<BR>
<BR>
<BR>

Pour <strong>TOUT</strong> effacer <input type="reset" value="effacer">
<BR>
<BR>
<input type="button" value="Score" onclick="getScore()">
</form>
<script src="scriptqcm.js"></script>




</body>
</html>
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Bonjour,

Je bloque, désolé je sais c'est brouillon, mais je commence a peine, avec un prof qui n'est pas prof de Code à la base (il est prof de Maths), donc c'est vachement compliqué.

Je dois lui rendre sous peu, j'ai tout fait sauf le bouton Score et je ne vois pas comment le réaliser. Pouvez-vous m'aider ?

Et puis comment il veut un bouton sous chaque question ba je vois pas comment mettre une seule fonction qui en fait 10 :/
> Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Bonjour,

Il ne faut pas confondre javascript et html.
C'est pas de ta faute, mais ce n'est pas la mienne non plus ^^

> score- - c'est pour baisser le score de 1 du coup ou rien avoir ?

Teste ;)
Tu peux aussi rechercher sur internet comment incrémenter et décrémenter les variables en javascript.

> et du coup le fait que ça marche que sur la question 2, comment le régler ??

Je ne comprends pas de quoi tu parles...
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> trifou
ba en fait ce script là

const NOMBRE_QUESTIONS = 10;
var score = 0;
var questions = [];
function correction(question_name, reponse_index) {
    if (!questions.includes(question_name)) {
        questions.push(question_name);
        var items = document.getElementsByName(question_name);
        var checked_index = -1;
        for (i=0; i<items.length; i++) {
            if (items[i].checked) {
                checked_index = i;
                break;
            }
        }
        if (checked_index == -1) {
            // Pas de sélection faite
            alert("Pas de choix sélectionné");
        }
        else if (checked_index == reponse_index) {
            // Bonne réponse
            alert("Bonne réponse");
            items[reponse_index].parentNode.style.color = "green";
            score++;
        }
        else {
            // Mauvaise réponse
            items[reponse_index].parentNode.style.color = "green";
            items[reponse_index].parentNode.style.textDecoration = "underline";
            items[checked_index].parentNode.style.color = "orange";
            items[checked_index].parentNode.style.textDecoration = "line-through";
            alert("Mauvaise réponse");
        }
    }
    else {
        // Réponse déjà donnée
        alert("Question déjà effectuée");
    }
}


function getScore() {
    if (questions.length < NOMBRE_QUESTIONS) {
        alert("Toutes les questions n'ont pas été validées !");
    }
    else {
        alert("Le score est de " + score + " points.");
    }
}



marche qu'avec ma question 2 de ce script:

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>QCM NSI</title>
<script language="javascript">
</script>
<link rel="stylesheet" href="styleqcm.css">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>

<form name="qcm">

<center><h1><mark><u>QCM NSI</u></mark></h1></center>

<h3>Bonjour et bienvenue dans le meilleur QCM d'NSI au monde, constitué de 10 questions dont UNE seule réponse par question est acceptée, sinon la réponse à la question sera considérée comme fausse et ne vous apportera AUCUN point. </h3>

<center><h1> <mark> <label id="LblClignotant">Good Luck :)</label> </mark> </h1></center>



<strong>Question 1 </strong>:
On donne ci-dessous un programme écrit en python :

<p  id = "prg1"|>
a = 10<BR>
for index in range(4):<BR>
 a = a + index<BR>
print(a)<BR>
</p>

Quelle valeur est affichée après exécution ?
<ul>
					<li><input type="checkbox"  name="question1" value="a"> 12.
					<li><input type="checkbox"  name="question1" value="b"> 14.
					<li><input type="checkbox"  name="question1" value="c"> 16.
					<li><input type="checkbox"  name="question1" value="d"> 13.
</ul>

		<input type="button" value="correction" onclick="correction1()">
		<input type="button" value="corrigé" onclick="corrige1()">
<BR>
<BR>
<BR>
<strong>Question 2 </strong> :
en quelle année le langage python est-il apparu ?
<ul>
					<li><input type="checkbox" name="question2" value="a"> 1780.
					<li><input type="checkbox"  name="question2" value="b"> 1930.
					<li><input type="checkbox"  name="question2" value="c"> 2002.
					<li><input type="checkbox"  name="question2" value="d"> 1991.
</ul>

		<input type="button" value="correction" onclick="correction('question2', 3)">
		<input type="button" value="corrigé" onclick="corrige2()">
<BR>
<BR>
<BR>
<strong>Question 3 :</strong>
La langage HTML est un langage de :
<ul>
					<li><input type="checkbox"   name="question3" value="a"> Programmation.
					<li><input type="checkbox"  name="question3" value="b"> Ecriture.
					<li><input type="checkbox"  name="question3" value="c"> Description.
					<li><input type="checkbox"  name="question3" value="d"> Localisation.
</ul>

		<input type="button" value="correction" onclick="correction3()">
		<input type="button" value="corrigé" onclick="corrige3()">
<BR>
<BR>
<BR>
<strong>Question 4 :</strong>
En quelle année le langage HTML est-il apparu ? :
<ul>
					<li><input type="checkbox"  name="question4" value="a"> 1990.
					<li><input type="checkbox"  name="question4" value="b"> 1969.
					<li><input type="checkbox"  name="question4" value="c"> 2020.
					<li><input type="checkbox" name="question4" value="d"> 1992.
</ul>

		<input type="button" value="correction" onclick="correction4()">
		<input type="button" value="corrigé" onclick="corrige4()">
<BR>
<BR>
<BR>
<strong>Question 5 :</strong>
L'inventeur du langage Python est :
<ul>
					<li><input type="checkbox"  name="question5" value="a"> Elon Musk.
					<li><input type="checkbox"  name="question5" value="b"> Guido van Rossum.
					<li><input type="checkbox"  name="question5" value="c"> Yoshiro Nakamatsu.
					<li><input type="checkbox" name="question5" value="d"> Gollum Ofthering.
</ul>
		<input type="button" value="correction" onclick="correction5()">
		<input type="button" value="corrigé" onclick="corrige5()">
<BR>
<BR>
<BR>
<strong>Question 6 :</strong>
Cette table de vérité est le table de :
<BR>
<p  id = "prg1"|>
   
		<span id='marge'/>0 	0 	0<BR>
		<span id='marge'/>0 	1 	1<BR>
		<span id='marge'/>1 	0 	1<BR>
		<span id='marge'/>1 	1 	0<BR>

</p>


<ul>
					<li><input type="checkbox"  name="question6" value="a"> AND.
					<li><input type="checkbox"  name="question6" value="b"> XOR.
					<li><input type="checkbox"  name="question6" value="c"> OR.
					<li><input type="checkbox"  name="question6" value="d"> NON A.
</ul>
		<input type="button" value="correction" onclick="correction6()">
		<input type="button" value="corrigé" onclick="corrige6()">
<BR>
<BR>
<BR>
<strong>Question 7 :</strong>
Quel est le nom du programme dans python qui sert à dessiner des formes géométriques ? :
<ul>
					<li><input type="checkbox"  name="question7" value="a"> Spyder
					<li><input type="checkbox"  name="question7" value="b"> Twitter
					<li><input type="checkbox"  name="question7" value="c"> Turtle
					<li><input type="checkbox"  name="question7" value="d"> Shark
</ul>
		<input type="button" value="correction" onclick="correction7()">
		<input type="button" value="corrigé" onclick="corrige10()">
<BR>
<BR>
<BR>
<strong>Question 8 :</strong>
Comment s'écrit le nombre 671 en binaire ? :
<ul>
					<li><input type="checkbox"  name="question8" value="a"> 1
					<li><input type="checkbox"  name="question8" value="b"> 1010100001
					<li><input type="checkbox"  name="question8" value="c"> 1010011110
					<li><input type="checkbox"  name="question8" value="d"> 1010011111
</ul>
		<input type="button" value="correction" onclick="correction8()">
		<input type="button" value="corrigé" onclick="corrige8()">
<BR>
<BR>
<BR>
<strong>Question 9 : </strong>
Ceci est un programme pour échanger les valeurs de deux variables, completez les petits pointillés :

<p  id = "prg1"|>

A = input("Donner la valuer de A:")<BR>
B = input("Donner la valeur de B:")<BR>

<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>
<span id='marge2'/>.....<BR>

print("A = : " , A)<BR>
print("B = : " , B) <BR>
		

</p>
<ul>
<span id='marge2'/>A = C
					<li><input type="checkbox" name="question9" value="a"> B = C<BR> <span id='marge2'/>A = C<BR>
<BR>
<span id='marge2'/>C = A					

					<li><input type="checkbox"  name="question9" value="b"> A = B<BR> <span id='marge2'/>B = C<BR>
<BR>
<span id='marge2'/>A = A					
					<li><input type="checkbox"  name="question9" value="c"> B = B<BR> <span id='marge2'/>C = C<BR>
<BR>					
<span id='marge2'/>C = A					
					<li><input type="checkbox"  name="question9" value="d"> A = B<BR> <span id='marge2'/>C = A
</ul>
		<input type="button" value="correction" onclick="correction9()">
		<input type="button" value="corrigé" onclick="corrige9()">
<BR>
<BR>
<BR>
<strong>Question 10 : </strong>
L'intensité de chaque couleur est donnée par un entier compris entre :
<ul>
					<li><input type="checkbox"  name="question10" value="a"> 0 et 256
					<li><input type="checkbox"  name="question10" value="b"> 0 et 258
					<li><input type="checkbox"  name="question10" value="c"> 0 et 255
					<li><input type="checkbox"  name="question10" value="d"> 12 et 12.1
</ul>
		<input type="button" value="correction" onclick="correction10()">
		<input type="button" value="corrigé" onclick="corrige10()">
<BR>
<BR>
<BR>

Pour  <strong>TOUT</strong>  effacer <input type="reset" value="effacer">
<BR>
<BR>
<p><input type="button" value="Afficher le score" onclick="getScore()"></p>
</form>
<script src="scriptqcm.js"></script>
 
 

</body>
</html>


J'ai regardé si la question 2 avait quelque chos e de différent, mais j'ai rien trouvé...


Et score toujours pas trouvé pour ajouter +3 et je pense que
score ++++++;
n'est pas valide x)
> Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Il faut changer toutes les fonctions dans les onclick, je t'avais mit un exemple pour la question 1 et 2.
Remonte plus en amont dans la discussion.
A toi de changer le reste, ce qui n'est pas bien difficile.

Pour l'incrémentation, décrémentation, etc.
https://www.w3schools.com/js/js_operators.asp
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> trifou
Ok j'ai fait les modifications nécessaires et j'ai trouvé
 score += 3;
, mais j'ai un dernier problème quand je mets également score -= 1; ça enlève non pas 1 mais 4 au score...
> Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Sans montrer la fonction correction que tu as modifiée, difficile de dire où ton erreur se situe.
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Effectivement, autant pour moi :

 const NOMBRE_QUESTIONS = 10;
var score = 0;
var questions = [];
function correction(question_name, reponse_index) {
    if (!questions.includes(question_name)) {
        questions.push(question_name);
        var items = document.getElementsByName(question_name);
        var checked_index = -1;
        for (i=0; i<items.length; i++) {
            if (items[i].checked) {
                checked_index = i;
                break;
            }
        }
        if (checked_index == -1) {
            // Pas de sélection faite
            alert("Pas de choix sélectionné");
        }
        else if (checked_index == reponse_index) {
            // Bonne réponse
            alert("Bonne réponse");
            items[reponse_index].parentNode.style.color = "green";
            score += 3;
        }
        else {
            // Mauvaise réponse
            items[reponse_index].parentNode.style.color = "green";
			items[reponse_index].parentNode.style.textDecoration = "underline";
            items[checked_index].parentNode.style.color = "orange";
            items[checked_index].parentNode.style.textDecoration = "line-through";
            alert("Mauvaise réponse");
			score--;
			
			
        }
    }
    else {
        // Réponse déjà donnée
        alert("Question déjà effectuée");
    }
}


function getScore() {
    if (questions.length < NOMBRE_QUESTIONS) {
        alert("Toutes les questions n'ont pas été validées !");
    }
    else {
        alert("Le score est de " + score + " points.");
    }
}

Bonjour,

Pas d'erreur ici.
Remontre ton html, et transforme tes checkbox en radio, cela peut se faire avec ton éditeur de texte en un tour de main avec l'option remplacer dans le menu de l'éditeur
type="checkbox"
par
type="radio"
.
Du moins si tu utilises un éditeur de texte ou ide digne de ce nom.
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> trifou
Oui j'utilise NotePad++ et c'est déjà fait. En fait le problème est que dès que je coche une seule réponse fausse le résultat devrait être de 29 / 30 mais la ça me met 25/30 ??
> Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020

Si neuf réponses correctes et une fausse:

score vaudra alors
9 * 3 + 1 * -1
soit 26 et non 29.

Pour cette raison que ton barème de points est bancal, pourquoi donc enlever 1 point pour une mauvaise réponse ? Alors que ne pas ajouter ou soustraire de points serait plus logique.

Pourquoi alors tu as 25 points au lieu de 26 ? Aucune idée, mais vérifie quand même ce que tu affirmes.
Ethios
Messages postés
15
Date d'inscription
mercredi 8 janvier 2020
Statut
Membre
Dernière intervention
11 janvier 2020
> trifou
Je sais que c'est pas logique mais c'est ses consignes, au pire pas très grave je vais faire comme vous dites 1 réponse juste = 1 point et réponse fausse pas de points. Merci pour votre aide précieuse