Voir aussi
Dans la même rubrique :
Analyser les réponses à une liste de questions
Tri et Histogramme
Tirage du lotoDu même auteur :
Créer une liste de QCMMême indexation :
Technique Web
Conseils pour débuter un site web
Analyser les réponses à une liste de questions
Belles icônes pas chères !
xhtml - 4 : Les entités
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
La Netiquette des forums
Menu de navigation sans JavaScript
Réaliser un formulaire de contact (1/4)
Un lecteur RSS pour votre site 1/2
Quiz en PHP 1/3
Page Erreur 404 en PHP
Un Editeur RSS pour votre site 1/2
Publication Spip : forme et typographie
Quiz en PHP 2/3
Menu dépliant pour les rubriques
Syndication, comment s’y retrouver
Un Editeur RSS pour votre site 2/2
Editer plusieurs fichiers de syndication 2/3
Etablir un questionnaire statistique en ligne
Gestion d’une rubrique... en attendant SPIP
Réaliser un formulaire de contact (2/4)
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Page contact en PHP 3/3
Réaliser un formulaire de contact (4/4)
Soigner en ligne, un art impossible ?
Initiation au xhtml - 2
Réaliser un formulaire de contact (3/4)
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Tri et Histogramme
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Un serveur dédié pour les nuls
Utilisation de la classe easyRSS
Editer plusieurs fichiers de syndication 3/3
Comment faire migrer son site ?
Proposer plusieurs styles pour votre site
Quiz en PHP 3/3
Quand JavaScript est désactivé... 1/2
Positionnement fixe... même avec Internet Explorer !
Javascript : n’oubliez pas Mac OS !
Installer un script PHP pour les nuls
Initiation au xhtml - 1
Editer plusieurs fichiers de syndication 1/3
Créer un forum à l’aide de phpBB
Le web structuré et sa présentation
Quand JavaScript est désactivé... 2/2
Page contact en PHP 1/3
Réaliser un formulaire de contact (5/4)
Un lecteur RSS pour votre site 2/2
Contrôler l’accès d’une partie du site avec .htaccess
Page contact en PHP 2/3
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Javascripts de Joël LeMontagner
Créer une liste de QCM
Pour être utilisé par des non-programmeurs, ce script ne nécessite que le changement de la variable du nombre de QCM et bien sûr l’énoncé des questions et réponses. Cette partie est délimité par des lignes d’étoiles. Le reste est automatique.
NB: les textes en rouge sont des commentaires à supprimer dans le code html
on déclare les tableaux des variables<script language="JavaScript">
var enonce_quest = new Array; l’énoncé de nos QCM
var nb_eltsform = new Array; le nombre de réponses possibles pour chaque QCM
var formans = new Array; l’énoncé des réponses
var commentaire = new Array; les commentaires de la correction à chaque énoncé
var ans = new Array; les numéros des bonnes réponses
var done = new Array; les questions faites
var panswer = new Array; les réponses de l’utilisateur
var score = 0; score à zéro
var rep = 0; nombre de réponses cochées
*************************************************
var nb_elts=2; le nombre de QCM, ici 2
var nb_elts_tot=nb_elts
enonce_quest [1]="Le javascript est " l’énoncé de la 1ére question
nb_eltsform[1]=4 le nombre de réponses possibles ici 4
formans[1]="identique au langage C " les réponses possibles, notez l’incrémentation
formans[2]="du java "
formans[3]="un langage à part "
formans[4]="identique au visual basic "
ans[1] = 3;la bonne réponse, ici la 3ème de la série
commentaire[1]="Malgré certains points communs avec d'autres, le javascript est un langage de programmation à part entiére " le commentaire (facultatif) de la correction au 1er QCM
enonce_quest [2]="le javascript"
nb_eltsform[2]=3les réponses possibles à la 2éme question, notez l’incrémentation qui se fait continuellement à partir du 1er QCM
formans[5]="se comporte de façon identique sur tous les navigateurs"
formans[6]="est compatible avec tous les navigateurs "
formans[7]="peut être désactivé par l'utilisateur "
ans[2] = 3;la bonne réponse, ici la 3éme de la série
commentaire[2]="le javascript peut être désactivé par l'utilisateur<br />son comportement peut varier selon le navigateur et aussi selon la version d'un même navigateur, voire marcher avec l'un et pas avec un autre<br />Certains navigateurs (peu répandu) ne le gérent pas"
***************************************************
function affich_pag(){ Affichage des QCM dans la page
compte3=0; toutes les variables à zéro
var compte=0
var compte2=0
inumber=3on détermine aléatoirement le numéro de la 1ére réponse possible à chaque qcm
randomnumber = Math.random() ;
rand1 = Math.round( (inumber-1) * randomnumber) + 1 ;
for (var i=1;i<=(nb_elts);i++) {document.write("<p><font color='#000000'><b><strong>"+i+" -"+enonce_quest[i]+"</strong></font></p></b><font color='#000080'><blockquote>");on affiche les énoncés
compte2=compte
trouv=0
for (var j=rand1+compte2;j<(nb_eltsform[i]+1+compte2);j++){et les réponses possibles dans un joyeux désordre un peu difficile à expliquer et réservé aux spécialistes
document.write(j-compte2-rand1+1+" - "+formans[j]+"<br />");compte++;
if (ans[i]==j-compte2 && trouv==0){
ans[i]=j-compte2-rand1+1;
trouv=1}
}
if (rand1>nb_eltsform[i]){
for (var j=compte2+1;j<(nb_eltsform[i]+1+compte2);j++){
document.write(j-compte2+" - "+formans[j]+"<br />");compte++;
if (ans[i]==j-compte2 && trouv==0){
ans[i]=j-compte2;
trouv=1}}
}
else{
if (rand1+compte2>compte2+1){for (var j=compte2+1;j<rand1+compte2;j++){
document.write(j-compte2+nb_eltsform[i]+1-rand1+" - "+formans[j]+"<br />")
compte++;
if (trouv==1){ligne=0}
if (ans[i]==j-compte2 && trouv==0){
ans[i]=j-compte2+nb_eltsform[i]+1-rand1;trouv=1}
}}
}
document.write('</font><form method="POST"><p>Cochez la bonne réponse : </font>')on affiche les cases à cocher
for (var k=1;k<(nb_eltsform[i]+1);k++){document.write(' <input type="radio" name="q" value="'+k+'"onclick="Engine('+i+',this.value)"> chaque case cochée appelle la fonction engine qui enregistre le nécessaire
<font color="#FF0000"><strong>'+k+' </strong></font>')
}
document.write('</p></form></blockquote>')}
}
function Engine(question, answer) {cette fonction enregistre les cases cochées et leurs numéros
if (answer != ans[question]) {
if (!done[question]) {
done[question] = -1;
rep++;
panswer[question]=answer;
}
else {
done[question] = -1;
panswer[question]=answer;
}
}
else {
if (!done[question]) {
done[question] = -1;
rep++;
panswer[question]=answer;
}
else {
panswer[question]=answer;
}
}}
function NextLevel () {compare les réponses de l’utilisateur aux bonnes réponses
score=0;
for (var i=1;i<(nb_elts_tot+1);i++){
if (panswer[i]==ans[i]){score++;si c’est la bonne, on incrémente le score
}
}
}
function correction() {
if (rep>= nb_elts ) {si tous les QCM sont faits
NextLevel () on calcule le score
puis on ouvre la fenêtre de correction
correc=open("","correction","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=1,resizable=1,width=500,height=350");
correc.document.write('<BODY TEXT="#000000" BGCOLOR="#FFFFC0" LINK="#0000FF" VLINK="#800080" ALINK="#FF00FF"><b><center>VOS REPONSES!</center><br /><br />');
for (var i=1;i<(nb_elts_tot+1);i++){on affiche les numéros des questions et les réponses de l’utilisateur
correc.document.write('QUESTION <font color="#FF0000"><b><strong>'+i+' : '+panswer[i].toUpperCase()+'</font ></b></strong>');
if (panswer[i]==ans[i]){
correc.document.write(" => EXACT<br />");on peut le féliciter si c’est bon
}
else{
correc.document.write(" => FAUX<br />");
}
}
correc.document.write("VOUS AVEZ "+score+" BONNES REPONSES SUR "+nb_elts_tot+"<br /><br />");Une correction plus détaillée
correc.document.write('<b><center>CORRECTION</center><br /><br /></center>');
for (var k=1;k<(nb_elts_tot+1);k++){
correc.document.write(" QUESTION <font color='#FF0000'><b><strong>"+k+" "+enonce_quest[k]+"</font></b></strong> - la bonne réponse est :<font color='#FF0000'><b><strong>"+ans[k]+"</font></b></strong><br />"+commentaire[k]+"<br /><br />");}
correc.document.write('ATTENTION ! Si vous revenez aux questions précédentes le numéro des bonnes réponses peut changer, leur tirage étant aléatoire.</center><br /></font></b></strong></center></p><br /><hr width="75%" />');
correc.document.close();
}
else {
alert("REPONDEZ D'ABORD A TOUS LES QCM, SVP !");si tous les QCM ne sont pas faits, on se fâche
} }
// -->// End
</script>fin du script et corps de la page
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>qcm</title>
</head>
<body TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080" ALINK="#FF00FF">
<table border="0" cellspacing="0" width="100%">
<tr>
<p>
<script>
affich_pag()
</script> </p>
<form>formulaire dont le clic va entrainer la correction
<div align="center"><center><p><input type="button"
value=" VOS RESULTATS ET LA CORRECTION" onclick="correction()"> </p>
</center></div>
</form>