Problème dans une fonction en JavaScript
RésoluMickael86480 Messages postés 698 Statut Membre -
<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.
4 réponses
Un système de quiz géographique utilise des radio-boutons et une logique de points en JavaScript, mais la branche « else » ne déduit pas les points pour les mauvaises réponses. Le constat central est que la variable de progression, nommée passage, n'est pas correctement initialisée ou gérée, ce qui empêche l'incrément et l’application des pénalités. Plusieurs pistes évoquées visent à corriger l'initialisation de passage et à assurer l'incrémentation conditionnelle, ainsi que la gestion des valeurs via URL ou variable globale pour retirer 10, 20 ou 30 points. En outre, certaines propositions suggèrent de remplacer la logique par une recharge conditionnelle ou de clarifier la séparation PHP/JS afin d'éviter les conflits et les erreurs de syntaxe.
-
la variable passage n'est égal à rien, donc on ne peut pas l'incrémenter au début du else :)
-
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,' ') : ''; }
-
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> -
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