[Résolu][javascript][classement array]

[classement array] [Résolu][javascript] - HTML/CSS - Programmation

Marsh Posté le 09-05-2011 à 09:05:07    

Bonjour,
 
J'essaye de faire une petite fonction me permettant de classer un tableau selon le clique sur le titre.
 
Voici un extrait de code :

Code :
  1. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
  2.   'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
  4. <head>
  5. <script type="text/javascript">
  6. var jeu= new Array();
  7. jeu[0]= new Array(1,'arnold','homme','rouge',17,'soissons','cheval');
  8. jeu[1]= new Array(4,'willy','homme','bleu',27,'belleu','chien');
  9. jeu[2]= new Array(3,'amélie','femme','rouge',18,'marseille','chat');
  10. jeu[3]= new Array(2,'nicolas','homme','noir',24,'conlie','dauphin');
  11. jeu[4]= new Array(5,'gwen','femme','jaune',40,'gournay sur aronde','cochon');
  12. jeu[5]= new Array(6,'pomme','femme','orange',17,'soissons','rouge gorge');
  13. var tousTotal= jeu.length;
  14. function afficheTableau(maTable) {
  15. var ancienne=document.getElementById('table_jeu');
  16. var monParent=ancienne.parentNode;
  17. monParent.removeChild(ancienne);
  18. var nouveau =document.createElement("table" );
  19. nouveau.id='table_jeu';
  20. var newLigne = document.createElement("tr" );
  21. var titre = new Array('Classement','Prenom','Genre','Couleur','Age','Ville','Animal');
  22. for(i=0;i<titre.length;i++){
  23.  var newCellule = document.createElement("th" );
  24.  var newA = document.createElement('a');
  25.  newA.href = 'javaScript:classement('+i+');';
  26.  var text=document.createTextNode(titre[i]);
  27.  newA.appendChild(text);
  28.  newCellule.appendChild(newA);
  29.  newLigne.appendChild(newCellule);
  30. }
  31. nouveau.appendChild(newLigne);
  32. // Création des lignes d'articles
  33. for(i=0;i<maTable.length;i++){
  34.  var laLigne=maTable[i];
  35.  var newLigne = document.createElement("tr" );
  36.  newLigne.name='joueur'+laLigne[0];
  37.  for(j=0;j<laLigne.length;j++){
  38.   var newCellule = document.createElement("td" );
  39.   var text=document.createTextNode(laLigne[j]);
  40.   newCellule.appendChild(text);
  41.   newLigne.appendChild(newCellule);
  42.  }
  43.  nouveau.appendChild(newLigne);
  44. }
  45. // Insertion du tableau dans le document
  46. monParent.appendChild(nouveau);
  47. }
  48. function classement(choix){
  49. var tmpTab = new Array();
  50. var newTable = new Array();
  51. var numeroLigne = new Array();
  52. var temp;
  53. var indice1;
  54. var indice2;
  55. for(i=0;i<jeu.length;i++){
  56.  ligne = jeu[i];
  57.  tmpTab[i] = ligne[choix];
  58.  numeroLigne[i] = i ;
  59. }
  60. for (indice1 = 0; indice1 < tmpTab.length ; indice1++) {
  61.  for (indice2 = 0; indice2 < tmpTab.length; indice2++) {
  62.   if (tmpTab[indice2] > tmpTab[indice1]) {
  63.    temp = numeroLigne[indice2];
  64.    numeroLigne[indice2] = numeroLigne[indice1];
  65.           numeroLigne[indice1] = temp;
  66.   }
  67.  }
  68. }
  69. for(i=0;i<numeroLigne.length;i++){
  70.  newTable[i] = jeu[numeroLigne[i]];
  71. }
  72. afficheTableau(newTable);
  73. }
  74. </script>
  75. <title>Test Script</title>
  76. </head>
  77. <body id="index" onload ='afficheTableau(jeu);' >
  78. <div id="titre"><h1>Test Script</h1></div>
  79. <div id='presentation'>
  80. <table id='table_jeu'>
  81. </table>
  82. </div>
  83. </body>
  84. </html>


 
Le problème est que ce code classe n'importe comment.
 
Et, je n'arrive pas à trouver ou est mon erreur.


Message édité par zuthos le 09-05-2011 à 16:26:33
Reply

Marsh Posté le 09-05-2011 à 09:05:07   

Reply

Marsh Posté le 09-05-2011 à 16:13:46    

En fait, j'ai trouvé.
 
J'ai oublié ( :o ) de classer tmpTab en même temps que numeroLigne.
 
Donc classement dès plus curieux.
 
Merci à ceux qui se sont penché sur mon problème.


Message édité par zuthos le 09-05-2011 à 16:15:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed