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 :

DOM et Javascript


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 71
    Par d�faut DOM et Javascript
    Bonjour,

    Voici un petit script dans une page HTML qui sert de petit jeu du "plus ou moins".
    On tire un nombre al�atoire entre 1 et 10, on le devine, on a un score en nombre de coups et un temps calcul� en secondes.

    Je dois remplir un tableau des 10 meilleurs joueurs class�s selon le temps mis pour trouver le nombre cherch�.

    Seulement, je ne sais pas comment faire pour le mettre � jour � chaque fois qu'un joueur a jou�. (C'est dans le else o� il y a le commentaire, "ins�rer le temps � la position i").

    Voici le code:

    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
    165
    166
    167
    168
    169
    170
    171
    <html>
     
    <head>
    <title>Mes premiers pas en Javascript : DOM et Javascript jeu du plus ou moins</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8">
     
    <style type = "text/css">
    h2{
    color:#000080;
    text-align:center;
    }
    body{
    background-color: #778899;
    }
    p{
    color:#000080;
    }
    </style>
     
    <script type="text/javascript">
     
    tab = new Array(10);
     
    function init()
    {
    	for(var i=0;i<tab.length;i++){
    		tab[i] = new Object();
    		tab[i].Nom="....";
    		tab[i].Temps=1000;
    		tab[i].Nombre=1000; }
    }
     
    function aleatoire()
    {
    x = Math.floor(Math.random()*10); //Donne un nb entier aleatoire entre 1 et 10
    alert("X="+x);                     //Affiche le nombre à deviner
    cpt = 1;                           //compteur de coups
    var t1,t2;
    t1 = new Date;
     
    	do{
    		nbchaine=prompt("Donnez un nombre entier compris entre 1 et 10 ou stop pour terminer");
    		if (nbchaine == "stop") return;     //Si on rentre "stop" la fonction s'arrête
    		nombre = parseInt(nbchaine);       //Convertit la chaine en nombre
     
    		if(nombre > x){     //Si le nombre saisi est supérieur au nombre cherché x
    			          cpt++;
    				  alert("Raté, c'est plus petit !");
     
    			      }else{	
    					    if(nombre < x) {
    					    cpt++;					
    					    alert("raté, c'est plus grand !"); }	
    				   }
     
    			if(nombre == x){
                                    t2 = new Date;
    				alert("Bravo, vous avez trouvé ! Nombre de coups : "+cpt);
    				var temps=((t2.getTime()-t1.getTime())/1000);  //Donne le temps ecoule entre t1 et t2
    				alert("Temps écoulé en secondes :"+temps); 
    	                               }
     
     
     
    	} while (nombre != x);
     
    	for(var i=0;(i<tab.length)&&(temps>tab[i].Temps);i++){
    	if (i==tab.length)
    		{
    		alert("Désolé, pas dans le top 10 !");
    		}
    	else
    		{
    		// inserer temps dans le top 10 a la position i
     
    		}
    	}
     
    }
    </script>
    </head>
     
    <body onload="init()">
     
    <h2> Bienvenue au "JEU DU PLUS OU MOINS" </h2><br/>
    <p>Veuillez cliquer sur le bouton pour lancer le jeu : <button onclick="aleatoire()">Jouer</button></p><br/>
     
    <table summary="Tableau des joueurs" border=15px width=35% bgcolor=grey>
    <caption align=bottom>Tableau des meilleurs joueurs</caption>
    <thead> <!--Description des colonnes-->
    <tr>
    <th id="id1">Rang</th>
    <th id="id2">Nom</th>
     
    <th id="id3">Nombre</th>
    <th id="id4">Temps</th>
    </tr>
    </thead>
    <tbody>
    <tr>     <!--Remplissage des lignes-->
    <td headers="rang1">1</td>
    <td headers="nom1"> </td>
    <td headers="nombre1"> </td>
    <td headers="temps1"> </td>
     
    </tr>
    <tr>
    <td headers="rang2">2</td>
    <td headers="nom2"> </td>
    <td headers="nombre2"> </td>
    <td headers="temps2"> </td>
    </tr>
    <tr>
    <td headers="rang3">3</td>
    <td headers="nom3"> </td>
    <td headers="nombre3"> </td>
     
    <td headers="temps3"> </td>
    </tr>
    <tr>
    <td headers="rang4">4</td>
    <td headers="nom4"> </td>
    <td headers="nombre4"> </td>
    <td headers="temps4"> </td>
    </tr>
    <tr>
    <td headers="rang5">5</td>
    <td headers="nom5"> </td>
     
    <td headers="nombre5"> </td>
    <td headers="temps5"> </td>
    </tr>
    <tr>
    <td headers="rang6">6</td>
    <td headers="nom6"> </td>
    <td headers="nombre6"> </td>
    <td headers="temps6"> </td>
    </tr>
    <tr>
    <td headers="rang7">7</td>
     
    <td headers="nom7"> </td>
    <td headers="nombre7"> </td>
    <td headers="temps7"> </td>
    </tr>
    <tr>
    <td headers="rang8">8</td>
    <td headers="nom8"> </td>
    <td headers="nombre8"> </td>
    <td headers="temps8"> </td>
    </tr>
     
    <tr>
    <td headers="rang9">9</td>
    <td headers="nom9"> </td>
    <td headers="nombre9"> </td>
    <td headers="temps9"> </td>
    </tr>
    <tr>
    <td headers="rang10">10</td>
    <td headers="nom10"> </td>
    <td headers="nombre10"> </td>
     
    <td headers="temps10"> </td>
    </tr>
    </tbody>
    </table>
     
    </body>
     
    </html>
    Chaque case du tableau doit �tre identifi� selon un identifiant unique.
    Donc pour remplir une case, il faut chercher l'objet poss�dant cet identifiant dans le DOM et modifier son champ .innerHTML mais je ne sais pas comment on fait ici.

    Merci.

  2. #2
    Membre tr�s actif Avatar de yacine.dev
    Inscrit en
    Octobre 2009
    Messages
    177
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par d�faut
    je recupere le tableau avec la fonction getElementById de l'obget document .
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    tabloHtml=document.getElementById("idtabloHtml");
    avec cette ligne tu peux acceder n'importe quelle case de ton tableau
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    alert("la valeur de la premiere cellule dans la premiere ligne du tableau 
    "+tabloHtml.rows[0].cells[0].firstChild.data);
    tu peux changer la valeur de cette cellule
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    tabloHtml.rows[0].cells[0].firstChild.innerHTML="nouvelle valeur";

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 71
    Par d�faut
    Oui d�sol� mais comment on r�cup�re la valeur du temps, du score et le nom dans ce cas ?

  4. #4
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Bonjour,
    j'ai du mal � voir le fonctionnement que tu envisages
    Qu'es-tu cens� stock� dans l'array tab() ?

    C'est plut�t ton tableau HTML (<table>) que tu devrais parcourir pour ta comparaison, non ?
    Tu devrais remplacer l'attribut "header" par "id", �a te donnerait un moyen d'acc�der directement � chaque cellule (et donc � son innerHTML) de mani�re plus conventionnelle via document.getElementById().

    Sinon, je sais pas si tu es d�j� arriv� � faire fonctionner ta boucle, mais tu n'as pas du voir souvent le message "D�sol� ..."
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	for(var i=0;(i<tab.length)&&(temps>tab[i].Temps);i++){
    	if (i==tab.length)
    		{
    		alert("D�sol�, pas dans le top 10 !");
    		}
    	else
    		{
    		// inserer temps dans le top 10 a la position i
    		
    		}
    	}
    A+

  5. #5
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Sinon, pour ins�rer proprement une ligne dans un tableau, il suffit de lire la FAQ

    A+

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 71
    Par d�faut
    Ok merci,j'ai fait ceci mais �a marche tjs pas...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    else            // inserer temps dans le top 10 a la position i
    		{
    		for(i=1;i<=10;i++){
    			var monid, noeud;
    			monid="temps"+i;
    			noeud=document.getElementById(monid);
    			noeud.innerHTML=""+tab[i].temps; }
    		}

  7. #7
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Arf

    Ca fonctionnerait mieux avec un array() � 2 dimensions un peu plus classique
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    	for(var i=0;i<tab.length;i++){
    		tab[i] = new Array();
    		tab[i][0]="....";
    		tab[i][1]=1000;
    		tab[i][2]=1000; }
    A+

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 71
    Par d�faut
    non c'est bon �a fonctionne bien comme �a mais par contre le tri ne marche pas, c'est � dire d�caler les valeurs du tableau vers le bas lorsqu'un joueur a fait un meilleur temps:

    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
    else            // inserer temps dans le top 10 a la position i
    		{
    		for(i=0;i<tab.length:i++){
    			for(j=9;j>i;j--){
    				tab[j].Temps=tab[j-1].Temps;
    				tab[j].Nom=tab[j-1].Nom;
    				tab[j].Nombre=tab[j-1].Nombre;
    					}
    			tab[i].Temps=temps;
    			tab[i].Nom=nom;
    			tab[i].Nombre=cpt;
    					}
    		for(i=1;i<=10;i++){
    			var monid="temps"+i;
    			var monid1="nom"+i;
    			var monid2="nombre"+i;
    			noeud=document.getElementById(monid);
    			noeud.innerHTML=""+tab[i-1].Temps;
    			noeud1=document.getElementById(monid1);
    			noeud1.innerHTML=""+tab[i-1].Nom;
    			noeud2=document.getElementById(monid2);
    			noeud2.innerHTML=""+tab[i-1].Nombre;
     				  }
    		}

  9. #9
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par fredericbdr Voir le message
    non c'est bon �a fonctionne bien comme �a
    Ben pour mon IE8, c'est ce qui provoquait une erreur.

    V�rifie que ton nav te signale bien toutes les erreurs de script ...

    A+

  10. #10
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par fredericbdr Voir le message
    d�caler les valeurs du tableau vers le bas lorsqu'un joueur a fait un meilleur temps
    Ben oui, mais �a tu n'en auras pas besoin : tout sera d�j� stock� dans ton tableau (HTML), � terme ...

    A+

Discussions similaires

  1. [DOM] IDE Javascript avec completion intelligente
    Par nicorama dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 07/03/2008, 19h42
  2. [DOM et JAVASCRIPT] comment iterer sur un noeud
    Par AliJava dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 04/12/2007, 09h24
  3. [DOM] fonction javascript dans html
    Par nopnop dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 23/04/2007, 09h53
  4. [DOM] Probleme JAVASCRIPT XML STRING DOM
    Par seb0634 dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 05/11/2006, 17h53

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