Forum de discussion
Forum « Programmation Javascript » (archives)
variable indéfinie
Envoyé: 19 juillet 2004, 6h30 par George.Habitbol
Je cherche à faire un QCM sur mon site, mais j'ai un petit problem:
mon QCM est généré à l'écran via une fonction Javascript et à partir d'un tableau contenant la question, les propositions, la reponse, etc... (en fait, chaque case du tableau reçoit une structure de données)
voici un exemple:
function question(num,Quest,Rep,TabProp,TabAide)
{this.num=num;
this.Quest=Quest;
this.Rep=Rep;
this.TabProp=TabProp;
this.TabAide=TabAide;
}
var Qcm=new Array(
new question(1,"En termes de vitesse de lecteur/graveur CD, le standard 1x correspond à :",4,new Array("1 Mo/sec","33.6 Kbits/sec","1200 Kbits/sec","300 Ko/sec", "150Ko/sec"),new Array("c' est calculé en Kilo octés par secondes"))
);
j'ai premièrement écrit une fonction JS générant tout le QCM à l'écran, là pas de probleme, ça marche. Mais j'aimerai que les questions soit affichées une par une, càd pouvoir passer d'une question à l'autre en cliquant sur un bouton.
voici le code de ma page:
<script language="JavaScript">
var Num=0;
//fonction générant la question à partir d'une case du tableau Qcm
function QCMgen2(i)
{Num=i;
var j;
document.clear();
document.write('<Form name="question'+Qcm[Num].num+'">');
document.write('<br><u><b>Question '+Qcm[Num].num+' :</b></u><br>');
document.write(Qcm[Num].Quest+'<br>');
for (j=0;j<Qcm[Num].TabProp.length;j++)
{document.write('<br><input type="radio" name="Q'+Qcm[Num].num+'">'+Qcm[Num].TabProp[j]+'</input>');
}
document.write('<br><input type=\"button\" value=\"valider\" onclick=parent.avatar.reponse(parent.QCM.document.forms.question'+Qcm[Num].num+'.Q'+Qcm[Num].num+'['+Qcm[Num].Rep+']) onMouseOver=parent.avatar.regarder(\"down\",\"d\",\"left\",\"a\") onMouseOut="parent.avatar.Centrer()"></input> ');
document.write('<input type=\"button\" value=\"aide\" onclick=aide(Qcm['+Num+'].TabAide)></input><br>');
document.write('<BR><input type=\"button\" value=\"précédent\" onclick=Preced(Num); ></input>');
document.write('<input type=\"button\" value=\" suivant \" onclick=suivant(Num); ></input><br>');
document.write('<input type=\"button\" value=\" Valeur \" onclick=alert(Num); ></input><br>');
document.write('</form><br>');
}
function Preced(N)
{if (N>0)
{N--;
QCMgen2(N);
}
else N=0;
}
function suivant(N)
{if (N<Qcm.length-1)
{N++;
QCMgen2(N);
}
else N=Qcm.length-1;
}
</script>
</HEAD>
<BODY Bgcolor="#ffffff" text="#000000" link="#00ff00" alink="#00ff00" vlink="#00ff00" >
<script src="C:\siteavatar\js\FonctionPageAvatar.js"></script>
<Script>
QCMgen2(Num);
</Script>
</BODY>
et voici le problem que je rencontre:
au chargement de la page, pas de pb, la première question s'affiche, si je clique une première fois sur le bouton suivant, toujours pas de pb, la question 2 est affichée. Mais si je clique encore une fois pour passer à la question 3, l'erreur suivante intervient: la variable 'Num' est indéfinie.
Comment faire pour pouvoir conserver cette variable? et pourquoi est-elle soudainement indéfinie?
Désolé pour cette loooongue question, et merci d'avance...
Réponses
|