Problème dans une fonction en JavaScript

Résolu/Fermé
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - 1 mars 2012 à 15:10
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - 1 mars 2012 à 18:37
Bonjour, je suis en train de développer un système de quizz sur un site de géographie. Pour les réponses, j'ai mis en place des radio-bouton que l'utilisateur doit utilisé pour donner sa réponse. Voici le code JS :

<script type="text/javascript"> 
function Radio(question, point) {
    if (document.getElementById('<?php echo $bonnereponse['capitale']; ?>').checked == true) { 
        document.getElementById('Choix').innerHTML = '<br><b>Bonne réponse <?php echo $bonnereponse['capitale']; ?></b><br><br><form action="capitale.php" method="POST"><input type="hidden" value="toto" name="toto"><input type="hidden" value="' + question + '" name="qts"><input type="hidden" value="' + point + '" name="pts"><input type="submit" value="Capitale suivante" name="boutonquestion"></form>';
    } 
    else {
        var passage = passage + 1
        if(passage == 1){
         point = point - 10
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 2){
         point = point - 20
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 3){
         point = point - 30
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 4){
         location.reload();
        }
    } 
} 
</script>


La partie 'if' fonction car la fonction détecte la bonne réponse, par contre la partie 'else' ne fonctionne pas, lorsqu'on choisit une mauvaise réponse rien ne se passe, or sauf erreur de ma part, le code devrait faire perdre à l'utilisateur 10, 20, 30 points ou recharger la page.

Merci de votre aide.
A voir également:

4 réponses

vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
1 mars 2012 à 15:13
la variable passage n'est égal à rien, donc on ne peut pas l'incrémenter au début du else :)
1
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
1 mars 2012 à 15:26
Ok merci vordano, c'est vraiment très facile, :)
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 1/03/2012 à 15:37
connaîtrais-tu une fonction comme reload() mais dans laquelle on peut envoyé un paramètre (ici le nombre de point restant de l'utilisateur)?
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
1 mars 2012 à 15:42
il y as document.location je crois, après tu met les paramètres en get
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
1 mars 2012 à 15:48
ok ça ferait quelque chose comme ceci?

if(passage == 4){
         document.location = point;
        }


Si oui comment je fais pour le récupérer au début de la page, sachant que le reste de la page est en php?
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
1 mars 2012 à 15:50
est ce que tu as cherché sur google pour utiliser la méthode location et la récupération de paramètres d'une url ?
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
1 mars 2012 à 17:56
du code qui pourrait t'être utile:
/**
 * Retourne la valeur d'un paramètre d'une url
 * 
 * @param string param
 * nom du paramètre dont on souhaite avoir la valeur
 * @param url
 * url dans laquel on souhaite récupérer le paramètre ou rien si l'on souhaite travailler sur l'url courante
 * @return String
 * @author Labsmedia
 * @see http://www.labsmedia.com/index.html
 * @licence GPL
 */
function getParamValue(param,url)
{
	var u = url == undefined ? document.location.href : url;
	var reg = new RegExp('(\\?|&|^)'+param+'=(.*?)(&|$)');
	matches = u.match(reg);
	return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';
}
0
vincent170186 Messages postés 316 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 28 septembre 2012 52
1 mars 2012 à 18:07
essaye -->

<script type="text/javascript">

<?php
if (isset($_GET['point2'])
{echo "var point3 = ".$_GET['point2']." ; var point = ".$_GET['point2'];

}
else
{echo "var point3 = 100 ; var point =100";}

function Radio(question, point) {
if (document.getElementById('Alger').checked == true) {
document.getElementById('Choix').innerHTML = '<br><b>Bonne réponse Alger</b><br><br><form action="capitale.php" method="POST"><input type="hidden" value="' + question + '" name="qts"><input type="hidden" value="' + point + '" name="pts"><input type="submit" value="Capitale suivante" name="boutonquestion"></form>';
}
else {
passage = passage + 1
if (document.location.href!=document.location.href.split("point2=")[0])
{ point3=document.location.search.split("point2=")[1];}
if(passage == 1){
if(point3!="" && point3 != 100){
point3 = point3 - 10
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
}
point = point - 10
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
}
if(passage == 2){
if(point3 && point3 != 100){
point3 = point3 - 20
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
}
point = point - 20
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
}
if(passage == 3){
if(point3 && point3 != 100){
point3 = point3 - 30
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
}
point = point - 30
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
}
if(passage == 4){
if(point3 && point3 != 100){
point3 = point3 - 40
document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
}
point = point - 40
question = question + 1
document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point
}
}
}
</script>
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 1/03/2012 à 18:21
Le problème des points est résolut, c'est plus simple en réceptionnant en php. Maintenant j'aimerais savoir comment faire pour envoyer deux valeurs

J'ai fais ceci mais ça ne fonctionne pas :

document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2=point&question2=question


J'ai également pensé à ceci mais toujours pas de résultat :



document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point"&question2="+question 
0
vincent170186 Messages postés 316 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 28 septembre 2012 52
Modifié par vincent170186 le 1/03/2012 à 18:24
document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point+"&question2="+question
0
Mickael86480 Messages postés 660 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
1 mars 2012 à 18:37
Merci à vous deux Vincent et vordano pour aide et votre patience, problème résolu
0