QCM

cs_Tovi Messages postés 3 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 22 mai 2007 - 21 mai 2007 à 00:37
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 22 mai 2007 à 07:11
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2007 à 10:18
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2007 à 10:20
pas regardé très loin... il y a peut-être d'autres choses....
<hr />


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



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2007 à 13:13
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 />
0
cs_Tovi Messages postés 3 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 22 mai 2007
21 mai 2007 à 19:28
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] }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tovi Messages postés 3 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 22 mai 2007
22 mai 2007 à 00:31
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>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 mai 2007 à 07:11
>>...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 />
0
Rejoignez-nous