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

jQuery Discussion :

Mon script pour mettre à jour une table : qu'en pensez vous ?


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut Mon script pour mettre à jour une table : qu'en pensez vous ?
    Bonjour,

    Je dois mettre à jour une table toutes les secondes

    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
     
    var $table;
    function createLine(jsonLine){
    	return '<tr>' +
    		'<td>' + jsonLine.x + '</td>' +
    		'<td>' + jsonLine.y + '</td>' +
    		'<td>' + jsonLine.z + '</td>' +
    	'</tr>';
    }
    function createBody(jsonTab){
    	var tbody = '<tbody>';
     
    	var i;
    	for(i=0; i<jsonTab.length; i++){
    		tbody += createLine(jsonTab[i]);
    	}
     
    	return tbody += '</tbody>';
    }
    function createTable(jsonTab){
    	var tab =
    		'<table class="table table-striped table-bordered table-hover">' +
    			'<thead>' +
    				'<tr>' +
    					'<th>X</th>' +
    					'<th>Y</th>' +
    					'<th>Z</th>' +					
    				'</tr>' +
    			'</thead>';
     
    	return tab += createBody(jsonTab) + '</table>';
    }
    function successMain(jsonVar){
    	var tableName = "tutu";
     
    	if(!$table){
    		$("#" + tableName).html(createTable(jsonVar.table));
    		$table = $("#" + table + " table");
    	} else {
    		$table.find("tbody").replaceWith(createBody(jsonVar.table))
    	}
     
    }
    Est-ce que vous auriez fait comme ça, où il y a des méthodes mieux pensées ?

    Merci d'avance,

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    la re/construction d'une TABLE est une des opérations les plus gourmandes pour un navigateur.

    Pourquoi reconstruire le DOM, qui plus est toutes les secondes, quand la modification des textContent/innerText peut être suffisante.

    Sur base de cette structure
    Code html : 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
    <table id="ma_table" border>
      <tr>
        <td>Lig 1 Col 1</td>
        <td>Lig 1 Col 2</td>
        <td>Lig 1 Col 3</td>
      </tr>
      <tr>
        <td>Lig 2 Col 1</td>
        <td>Lig 2 Col 2</td>
        <td>Lig 2 Col 3</td>
      </tr>
      <tr>
        <td>Lig 3 Col 1</td>
        <td>Lig 3 Col 2</td>
        <td>Lig 3 Col 3</td>
      </tr>
    </table>
    et avec les données suivantes
    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
    var  data =[
      {
        'nom': 'un_nom',
        'prenom':'un_prenom',
        'age': 'un_age'
      },
      {
        'nom': 'deux_nom',
        'prenom':'deux_prenom',
        'age': 'deux_age'
      },
      {
        'nom': 'trois_nom',
        'prenom':'trois_prenom',
        'age': 'trois_age'
      }
    ];
    une reconstitution du type, pour exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Récupération de la TABLE
    var oTable = document.getElementById('ma_table');
    // Récupération des TD contenues dans la TABLE
    var oTDs = oTable.getElementsByTagName('TD');
    // Affectation des datas
    for( var i=0; i < data.length; i++){
      oTDs[i*3 +0].textContent = data[i].nom;
      oTDs[i*3 +1].textContent = data[i].prenom;
      oTDs[i*3 +2].textContent = data[i].age;
    }
    me parait plus opportune, il te faudrait bien sûr que le nombre de contenants corresponde au nombre de contenus.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    oki merci

    Dans mon tableau, j'aurais peut etre des fusion de case
    => donc il faut définir de ID lors de la construction du tableau ?

    S'il y a un grand nombre de données à rafraichir, il n'y a pas de risque de voir les valeur ne pas se rafraichir en même temps (ce qui risque de faire un peu moche) ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Dans mon tableau, j'aurais peut etre des fusion de case
    => donc il faut définir de ID lors de la construction du tableau ?
    pas forcément cela peut se gérer avec un index dans les datas par exemple.

    S'il y a un grand nombre de données à rafraichir, il n'y a pas de risque de voir les valeur ne pas se rafraichir en même temps
    il faudrait tester sur un grand nombre, mais qu'est ce qu'un grand nombre, mais la reconstruction est toujours très gourmande quoiqu'il arrive.

    Tu peux également regarder le Petit guide du templating client concernant les templates.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    ok merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/02/2015, 19h17
  2. Réponses: 3
    Dernier message: 29/10/2011, 14h24
  3. probleme pour mettre à jour une table
    Par micker dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2009, 14h11
  4. Problème pour mettre à jour une table SQL
    Par Bes74 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/03/2009, 20h21
  5. RechDom pour mettre à jour une table
    Par timis dans le forum Access
    Réponses: 7
    Dernier message: 28/08/2008, 13h18

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