QCM

Signaler
Messages postés
3
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonsoir,

Je suis LE novice dans le javascript.
Je dois réaliser un audit professionnel.
Afin d'avoir une présentation correcte, j'ai voulu le réaliser sous une page html, d'ou le javascript (car serveur client).

Je me suis basé sur des questionnaires d'aide (<!--StartFragment -->http://tecfa.unige.ch/~roiron/staf2x/qcm.htm ) pour confectionner ma premiere ébauche.

J'ai demandé conseil à des connaissances en la matière, mais je bloque pour un dernier point.
J'aurais souhaité rajouter un commentaire personnel pour chaque question... et que celui-ci apparaisse sur la page générée pour les résultats.
Or la mention UNDEFINED pour ma value est présente.

J'ai omis d'inclure ce commentaire personnel dans mon langage javascript. Mais quelle formule dois je utiliser ?

Voici ma source (j'ai volontairement laissé que la 1ère question) :

<html><head><title>CTL</title>
       
<script languag= "JavaScript">


<!-- 


// Copyright Cyril Roiron
// All rights reserved


var ttok="";


// les tablos necessaires
var question = new Array();


var a=0;
var b=0;
var x=0;
var m=0;




question[m] = "1.1.1 RGX ?"
m++;
// les tablos necessaires
var f_b = new Array();
var correct = new Array();
var rep = new Array();
var com = new Array();
var qom = new Array();


// crée la fenètre principale avec son contenu
function creefenetre(contenu, width, height)
{
var cc = contenu;
contenu = "<html><head><title>Correction</title></head>R&eacute;sultats
" + cc;
contenu  += "</html>";document.clear();document.open();document.writeln(contenu);document.close();
}


function verifier(yo)
{
var resultat="";
var erreur=0;




for (var n=0; n < (question.length); n++)
{
if (!rep[n])
{
ttok=ttok+"Vous n'avez pas repondu à la question "+(n+1)+": \n";
ttok=ttok+"'"+question[n]+"'\n";
}


else {
if(correct[n] == 1)
{
rep[n]=""+rep[n]+"";
//0B6912  20B200
com[n]=""+com[n]+"";
}
else
{
rep[n]=""+rep[n]+"";
erreur++;
}
resultat+="<hr>* A la question: "+question[n]+" : <dd>Vous avez r&eacute;pondu: "+rep[n]+"
"+f_b[n]+qom[n];


}
}


if (ttok ! = "")
{ alert(ttok); }
else {


if (erreur==0)
{
resultat+="<hr>Vous avez r&eacute;pondu correctement &agrave; toutes les questions, f&eacute;licitation &nbsp;  :)
";
}
else
{
if (erreur==1)
{
resultat+="<hr>Vous avez fait une erreur
";
}
else
{
resultat+="<hr>Vous avez fait "+erreur+" erreurs
";
}
}


for (var i=0; i<yo.elements.length; i++)
{
yo.elements[i].checked = 0;
}


creefenetre(resultat, 600, 600);
 
}
}




// -->
</script></head>
   



CTL


<form name="questionnaire">
<hr>


 <script language="JavaScript">
<!--
 document.write(question[0].bold());
 //-->
 </script>
 

 
 <script language="JavaScript">
 <!--
 x=0;
 document.write(document.questionnaire.r0.value);


 //-->
 </script>
 
 

 
 <script language="JavaScript">
 <!--
 x++;
 document.write(document.questionnaire.r0[x].value);
 //-->
 </script>




<TEXTAREA COLS="180" ROWS="1" style="background-color: #FFFFCC; border: 1px #959EAD solid;
font-family: Verdana; font-size: 11px" name="qr0" value="" qom[0]="this.value"></TEXTAREA>

Merci d'avance pour votre aide ;)

6 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

pas vu de UNDEFINED nulle part
mais :
    1°
        <html><head><title>CTL</title>
        <script language= "JavaScript">
        <!--  pas languag      et il vaudrait mieux <script type="text/javascript">
        // Copyright Cyril Roiron

    2°
       ...name="qr0" value="" qom[0]="this.value"></TEXTAREA>

       manque l'évênement pour le javascript

       ...name="qr0" value="" onJENESAISPASQUOI ='qom[0]="this.value";'></TEXTAREA>






<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
pas regardé très loin... il y a peut-être d'autres choses....
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
d'ailleurs c'est plutôt :



...onJENESAISPASQUOI
'qom[0]this.value;'
mais ça ne doit plus t'intéresser, je suppose.





<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
3
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007

En fait voici à quoi ressemble mon questionnaire :

Oui effectivement c'est un ONCLICK


Mais après la VALUE, c'est le commentaire écrit , donc la value= ""est erronée, il me dit UNDEFINED quand je génére les résultats.
J'ai d'abord modifié : var qom new Array(); par var qr new Array(); vu que j'ai appelé mes commentaire "qr"


J'ai testé çà :

<TEXTAREA COLS ="180" ROWS="1" style="background-color: #FFFFCC; border: 1px #959EAD solid;
font-family: Verdana; font-size: 11px" name="qr0" value="" onclick='qr[0]=document.write;'></TEXTAREA>

J'ai désormais un texte d'affiché mais le voici : function write() { [native code] }
Messages postés
3
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007

En fait le onSubmit devrait etre plus approprié... parcontre j'avoue etre totalement perdu pour la direction de celui-ci :s


<html><head><title>FAQ</title>


       

<script type= "text/javascript">


<!--

function CheckInput() {

 for(i=0; i<document.forms[0].elements.length; ++i)

  if(document.forms[0].elements[i].value == "")  {

    alert("Tous les champs n'ont pas été remplis!");

        document.forms[0].elements[i].focus();

        return false;

   }

  return true;

}

//-->


<!-- 


// Copyright Cyril Roiron

// All rights reserved


var ttok="";


// les tablos necessaires

var question = new Array();


var a=0;

var b=0;

var x=0;

var m=0;


question[m] = "1.1.1 ?"

m++;

question[m] = "1.1.2 ?"

m++;

// les tablos necessaires

var f_b = new Array();

var correct = new Array();

var rep = new Array();

var com = new Array();

var qr = new Array();


// crée la fenètre principale avec son contenu

function creefenetre(contenu, width, height)

{

var cc = contenu;

contenu =
"<html><head><title>Correction</title></head>R&eacute;sultats
" + cc;

contenu  += "</html>";document.clear();document.open();document.writeln(contenu);document.close();

}


function verifier(yo)

{

var resultat="";

var erreur=0;


for (var n=0; n < (question.length); n++)

{

if (!rep[n])

{

ttok=ttok+"Vous n'avez pas repondu à la question "+(n+1)+": \n";

ttok=ttok+"'"+question[n]+"'\n";

}


else {

if(correct[n] == 1)

{

rep[n]=""+rep[n]+"";

//0B6912  20B200

com[n]=""+com[n]+"";

}

else

{

rep[n]=""+rep[n]+"";

erreur++;

}

resultat+="<hr>* A la question:
"+question[n]+" : Vous avez
r&eacute;pondu: "+rep[n]+"
"+qr[n];


}

}


if (ttok ! = "")

{ alert(ttok); }

else {


if (erreur==0)

{

resultat+="<hr>Vous avez
r&eacute;pondu correctement &agrave; toutes les questions,
f&eacute;licitation &nbsp;  :)
";

}

else

{

if (erreur==1)

{

resultat+="<hr>Vous avez fait une erreur
";

}

else

{

resultat+="<hr>Vous avez fait "+erreur+" erreurs
";

}

}


for (var i=0; i<yo.elements.length; i++)

{

yo.elements[i].checked = 0;

}


creefenetre(resultat, 600, 600);

 

}

}


// -->

</script></head>

   




FAQ


<form name="questionnaire" action="test.htm" onSubmit="return CheckInput();">

<hr>


 <script language="JavaScript">

<!--

 document.write(question[0].bold());

 //-->

 </script>

 


 

 <script language="JavaScript">

 <!--

 x=0;

 document.write(document.questionnaire.r0.value);


 //-->

 </script>

 

 


 

 <script language="JavaScript">

 <!--

 x++;

 document.write(document.questionnaire.r0[x].value);

 //-->

 </script>






<hr>

 

 <script language="JavaScript">

<!--

 document.write(question[1].bold());

 //-->

 </script>



 

 <script language="JavaScript">

 <!--

 x=0;

 document.write(document.questionnaire.r1.value);

 //-->

 </script>


 


 

 

 <script language="JavaScript">

 <!--

 x++;

 document.write(document.questionnaire.r1[x].value);

 //-->

 </script>


<hr>

 






</form></html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>...onclick='qr[0]=document.write;'></TEXTAREA>
>>J'ai désormais un texte d'affiché mais le voici : function write() { [native code] }

ben oui : c'est ce qui est fait, demandé.
document.write est un ordre (une function) javascript
"normalement" on utilise document.write("du texte, des balises html....")

donc affecter à une variable (qr[0]) une function (document.write) ?
ça donne le texte affiché.

que veux-tu faire lorsque l'on clique sur le textarea ?

<hr />                Cordialement          Bul     [mon Site]     [M'écrire]<hr />