IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modification de codes JavaScript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Points : 51
    Points
    51
    Par défaut Modification de codes JavaScript
    Bonjour,

    J'aimerai modifier un jeu qui se présente sous la forme d'un questionnaire, qui bien que fonctionnel, présente le défaut de présenter les solutions aux questions après y avoir répondu mais avant de valider les points obtenus à ce jeu.
    Par conséquent je souhaiterai que les solutions soient présentées après avoir obtenu les points.
    Pour cela j'ai trouver une possibilité en modifiant le fichier JavaScript que voici et qui fait parti de la programmation de ce jeu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    /* Script utilisant Ajax */
     
    // Variables globales.
    var qcm = ''; // Dossier du QCM.
    var nb_q = 0; // nombre de questions dans le QCM.
    var q = 1; // numéro de la question actuelle.
    var rep = 0; // numéro de la réponse actuelle.
    var fini = 0; // indique si le QCM est terminé (affichage du corrigé.
     
    function reception()
    {
    	if (http_request.readyState == 4 && http_request.status == 200)
    	{
    		var fichierxml = http_request.responseXML;
     
    		if (fini == 1) // Affichage du corrigé.
    		{
    			var question, image, explic, reponses;
    			var xml = fichierxml.getElementsByTagName('question').item(0);
    			if (xml.childNodes[0].firstChild) question = xml.childNodes[0].firstChild.data;
    			else question = '';
    			if (xml.childNodes[1].firstChild) image = xml.childNodes[1].firstChild.data;
    			else image = '';
    			if (xml.childNodes[2].firstChild) explic = xml.childNodes[2].firstChild.data;
    			else explic = '';
    			reponses = new Array;
    			for (i = 0; i < xml.childNodes[3].childNodes.length; i++)
    			{
    				reponses[i] = new Array;
    				if (xml.childNodes[3].childNodes[i].firstChild)
    					reponses[i][0] = xml.childNodes[3].childNodes[i].firstChild.data;
    				else
    					reponses[i][0] = '';
    				reponses[i][1] = xml.childNodes[3].childNodes[i].getAttribute('coul');
    			}
     
    			// remplissage de la page avec les données lues.
    			document.getElementById('c_titre').innerHTML = ':. Correction : Question '+q+'/'+nb_q+' .:';
    			var html = '<div id="voir_question">'+question+'</div>';
    			if (image != '') html += '<div id="voir_image"><img alt="" src="qcm/'+qcm+'/'+image+'" /></div>';
    			if (explic != '') html += '<div id="voir_explic">'+explic+'</div>';
    			html += '<div id="voir_reponses">';
    			rep = 0;
    			for (i = 0; i < reponses.length; i++)
    			{
    				html += '&gt; <a class="'+reponses[i][1]+'">'+reponses[i][0]+'</a><br />';
    			}
    			html += '</div>';
    			document.getElementById('c_cadre').innerHTML = html;
    			if (q > 1) document.getElementById('bout_0').innerHTML = '<a href="javascript:c_prec();">Question précédante</a>';
    			else  document.getElementById('bout_0').innerHTML = 'Question précédante';
    			if (q < nb_q) document.getElementById('bout_1').innerHTML = '<a href="javascript:c_suiv();">Question suivante</a>';
    			else  document.getElementById('bout_1').innerHTML = 'Question suivante';
    			return 0;
    		}
     
     
    		if (fichierxml.getElementsByTagName('bonnesreponses').item(0) != null)
    		{
    			// Le QCM est fini, on affiche le nombre de bonnes réponses.
    			var bonnes_rep = fichierxml.getElementsByTagName('bonnesreponses').item(0).firstChild.data;
    			document.getElementById('c_cadre').innerHTML = '<div id="voir_result"><img src="interface/vert.gif" alt="" height="15" width="'+Math.floor(bonnes_rep*200/nb_q)+'" class="no_border_droite" /><img src="interface/rouge.gif" alt="" height="15" width="'+Math.floor((nb_q-bonnes_rep)*200/nb_q)+'" class="no_border_gauche" /><br /><br />Bonnes réponses : '+bonnes_rep+'/'+nb_q+'</div>';
    			document.getElementById('c_titre').innerHTML = ':. Résultats .:';
    			document.getElementById('bout_1').innerHTML = '<a href="javascript:corrige();">Voir le corrigé</a>';
    			return 0;
    		}
     
    		// On récupère les données de la question.
    		var question, image, explic, reponses;
    		var xml = fichierxml.getElementsByTagName('question').item(0);
    		if (xml.childNodes[0].firstChild) question = xml.childNodes[0].firstChild.data;
    		else question = '';
    		if (xml.childNodes[1].firstChild) image = xml.childNodes[1].firstChild.data;
    		else image = '';
    		if (xml.childNodes[2].firstChild) explic = xml.childNodes[2].firstChild.data;
    		else explic = '';
    		reponses = new Array;
    		for (i = 0; i < xml.childNodes[3].childNodes.length; i++)
    		{
    			if (xml.childNodes[3].childNodes[i].firstChild) reponses[i] = xml.childNodes[3].childNodes[i].firstChild.data;
    			else reponses[i] = '';
    		}
     
    		// remplissage de la page avec les données lues.
    		document.getElementById('c_titre').innerHTML = ':. Question '+q+'/'+nb_q+' .:';
    		var html = '<div id="voir_question">'+question+'</div>';
    		if (image != '') html += '<div id="voir_image"><img alt="" src="qcm/'+qcm+'/'+image+'" /></div>';
    		if (explic != '') html += '<div id="voir_explic">'+explic+'</div>';
    		html += '<div id="voir_reponses">';
    		rep = 0;
    		for (i = 0; i < reponses.length; i++)
    		{
    			html += '<input type="radio" name="rep"'+((i == rep) ? ' checked="checked"' : '')+' onclick="javascript:rep='+i+';" /> '+reponses[i]+'<br />';
    		}
    		html += '</div>';
    		document.getElementById('c_cadre').innerHTML = html;
    		document.getElementById('bout_1').innerHTML = '<a href="javascript:suiv();">Valider</a>';
    	}
    }
     
    function envoie_req(req)
    {
    	// création du XMLHttpRequest et envoie d'une requête.
    	if (window.XMLHttpRequest)
    	{
    		http_request = new XMLHttpRequest();
    		if (http_request.overrideMimeType) http_request.overrideMimeType('text/xml');
    	}
    	else if (window.ActiveXObject)
    	{
    		try { http_request = new ActiveXObject("Msxml2.XMLHTTP") }
    		catch (e)
    		{
    			try { http_request = new ActiveXObject("Microsoft.XMLHTTP") }
    			catch (e) {}
    		}
    	}
    	if (!http_request) alert('Erreur : Impossible d'initialiser XMLHttpRequest.');
     
    	http_request.onreadystatechange = reception;
    	http_request.open('POST', 'voir_ajax.php', true);
    	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     
    	http_request.send(req);
    }
     
    function init(nb_questions, dossier_qcm)
    {
    	nb_q = nb_questions;
    	qcm = dossier_qcm;
    	document.getElementById('bout_1').innerHTML = 'Valider'; // On masque le bouton jusqu'à reception des données.
    	envoie_req(null);
    }
     
    function suiv()
    {
    	q ++;
    	document.getElementById('bout_1').innerHTML = 'Valider'; // On masque le bouton jusqu'à reception des données.
    	envoie_req('rep='+rep);
    }
     
    function corrige()
    {
    	q = 1;
    	fini = 1;
    	document.getElementById('bout_1').innerHTML = ''; // On masque le bouton jusqu'à reception des données.
    	envoie_req('q='+q);
    }
     
    function c_suiv()
    {
    	q ++;
    	document.getElementById('bout_0').innerHTML = 'Question précédante'; // On masque le bouton jusqu'à reception des données.
    	document.getElementById('bout_1').innerHTML = 'Question suivante'; // On masque le bouton jusqu'à reception des données.
    	envoie_req('q='+q);
    }
     
    function c_prec()
    {
    	q --;
    	document.getElementById('bout_0').innerHTML = 'Question précédante'; // On masque le bouton jusqu'à reception des données.
    	document.getElementById('bout_1').innerHTML = 'Question suivante'; // On masque le bouton jusqu'à reception des données.
    	envoie_req('q='+q);
    }
    Mon idée consisterait à modifier la ligne 64 que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('bout_1').innerHTML = '<a href="javascript:corrige();">Voir le corrigé</a>';
    >Voir le corrigé</a> devrait être remplacé par:
    >Validez vos points</a>
    ainsi que d'autres éléments que je ne maîtrise pas sur cette ligne pour qu'en cliquant sur "Validez vos points", cela conduirait sur une page PHP afin valider les points obtenus en base de donnée.
    Ensuite lorsque les points sont validés en base de données par cette page PHP il se produirait un retour au fichier JavaScript à la ligne 142 (function corrige() ) pour voir alors la solution ou corrigé.
    En résumé, il faudrait intercaler la validation des points entre le moment où le joueur à répondu à l'ensemble des questions et le moment où il peut voir la solution.

    Merci d'avance pour votre aide.
    A+

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 922
    Points
    44 922
    Par défaut
    Bonjour,
    pas du tout lu ton code mais je m'attarde sur
    Mon idée consisterait à modifier la ligne 64 que voici:
    document.getElementById('bout_1').innerHTML = '<a href="javascript:corrige();">Voir le corrigé</a>';.

    >Voir le corrigé</a> devrait être remplacé par:
    >Validez vos points</a>
    ainsi que d'autres éléments que je ne maîtrise pas sur cette ligne pour qu'en cliquant sur "Validez vos points", cela conduirait sur une page PHP afin valider les points obtenus en base de donnée.
    Qu'est ce qui t'en empêche ?
    • tu ne sais pas modifier un texte par un autre, tu sélectionnes le texte à disparaitre et tu saisies le nouveau à la place.
    • met dans l'attribut href l'adresse de ta page php, c'est au départ le rôle d'une balise <a> et le baBA du html.

  3. #3
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Ok ça marche pour quitter la page JavaScript afin de parvenir sur celle ci: (après avoir validé les points et qui doit permettre ensuite d'accéder au corrigé via la page JavaScript (ligne 142)):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    session_start();
    try {
      $dns = 'mysql:host=xxxxxxxxxxx;dbname=xxxxxxxx';
      $utilisateur = 'xxxxxxx';
      $motDePasse = 'xxxxxxxxxxxxxxxx';
      $connection = new PDO( $dns, $utilisateur, $motDePasse );
    } catch ( Exception $e ) {
      echo "Connection à MySQL impossible : ", $e->getMessage();
      die();
    }
    include 'header_.html';
    echo "<br/>";
    echo "<br/>";
    if(isset($_SESSION['nick'])); 
    $reponse_bon = htmlspecialchars(trim($_SESSION['rep_bon']));
    $nombre_question = htmlspecialchars(trim($_SESSION['nb_q']));
    $points=$reponse_bon * $_SESSION['coeff'];
    $points_totaux=$nombre_question * $_SESSION['coeff'];
    echo nl2br("<h2>Réponse au Q-C-M intitulé: \n ".$_SESSION['titre']."</h2>");
    echo"<h1>".$_SESSION['nick']." votre score est de ".$reponse_bon." bonnes réponses sur ".$nombre_question." questions. </h1>";
    echo "<h2>Soit $points points sur $points_totaux</h2>";
    ?>
    <!DOCTYPE html>
    <html>
      <head>
    	<meta charset="utf-8">
        <link rel="stylesheet" content="text/css" href="default.css">
      </head>
    <body>
    <h3>Voulez vous voir le classement général?</br>
    Si oui, cliquez ici: <a href="classement.php"title="Connexion">Classement Général.</a></h3>
     
    //Code à ajouter pour retourner à la ligne 142 function corrige() du fichier JavaScript:
    <h3>Voulez vous voir le corrigé ou solution?</br>
                                                                              </h3>
     
    </body>
    </html>
    Maintenant que dois je écrire aux lignes 35 et 36 afin de pouvoir accéder au fichier JavaScript en ligne 142 qui permettra de voir le corrigé du questionnaire?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 922
    Points
    44 922
    Par défaut
    Maintenant que dois je écrire aux lignes 35 et 36 afin de pouvoir accéder au fichier JavaScript en ligne 142...
    ce que tout le monde fait pour exécuter une fonction, il l'appelle (et ta pioche).

  5. #5
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Points : 51
    Points
    51
    Par défaut
    Plus précisément?

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 922
    Points
    44 922
    Par défaut
    la base en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // définition d'une fonction
    function et_ta_pioche( param){
      console.log( param);
    }
    // appel de la fonction
    et_ta_pioche( 'Hello world !'); // >> Hello world !

  7. #7
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Points : 51
    Points
    51
    Par défaut
    ok merci.
    Mais il me reste un point à éclairci que voici:
    Que signifie:
    console.log( param);

    ( param); j'imagine que se sont les paramètres de console.log.
    Ou peut tu me fournir un site qui traite de consol.log?

    Merci.

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 922
    Points
    44 922
    Par défaut
    Que signifie:
    console.log( param);
    c'est une redirection de la sortie dans la console web du navigateur.

    ( param); j'imagine que se sont les paramètres de console.log.
    Non c'est le paramètre passé à la fonction dans l'exemple fourni.

    Ou peut tu me fournir un site qui traite de consol.log?
    Console sur MDN

  9. #9
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    Novembre 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 99
    Points : 51
    Points
    51
    Par défaut
    OK merci pour ton aide.
    Il me faut étudier cela désormais pour sans doute arriver à ce que je souhaite.
    A+

Discussions similaires

  1. Modification d'un code JavaScript
    Par zeroD dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/01/2013, 11h30
  2. modification d'un code javascript
    Par leo88 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2012, 20h48
  3. modification legere dans un code javascript
    Par flexi2202 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/02/2011, 00h52
  4. Fermeture fenetre crée par code javascript
    Par Kerod dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/02/2010, 00h04
  5. Modification de mon code javascript
    Par lumycaan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/07/2009, 21h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo