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 :

Accélérer l'insertion d'éléments dans le DOM


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut Accélérer l'insertion d'éléments dans le DOM
    Bonjour,

    Je travail acutellement sur une grille qui doit m'afficher des données.
    Pour chaque ligne, j'ai un template que je génère avec les datas.

    Actuellement, quand j'insère mes 50 lignes, il y a un figeage de quelques secondes.
    Je voudrais réduire ce temps et je voudrais connaitre les bonnes pratiques pour rendre les insertions dans le DOM
    (ex: utiliser des class css plutôt que la balise style...)

    Quelqu'un aurait-il un lien car je n'ai pas trouvé
    Merci
    Sylo

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Bonjour!

    ...une grille...

    ...afficher des données...

    ...j'ai un template que je génère avec les datas....

    ...j'insère mes 50 lignes...

    ...les bonnes pratiques pour rendre les insertions dans le DOM...

    ...Quelqu'un aurait-il un lien car je n'ai pas trouvé
    Le rapport avec JavaScript m'échappe un peu, là...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Ah bon...

    Je dois rater un truc.

    Pour chaque ligne de ma grille, je construit une div dans mon javascript $("<div style='fsdklfjlsdfl'/>").appendTo(...) etc...
    C'est une grosse div qui contient d'autres div.

    Une fois la div construite, je fait un $Div.appendTo($DivDeMaGrid).

    L'insertion de 200 lignes fait un freeze de 10 secondes...

    Je voudrais savoir ce que je peux améliorer dans mon code HTML ou ma méthodologie pour que l'insertion dans la DIV de ma grid prenne moins de 10 secondes...

    Est-ce plus clair ?

    Merci
    Sylo

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    En fait, je n'ai pas vu ton code... et je pense qu'il y a une section JQuery sur ce forum

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Salut,

    Ben je ne sais pas exactement ce que tu fais alors juste une hypothèse si par exemple tu fais plusieurs insertions dans Le DOM alors cela pourrait aller plus vite en faisant qu'une seule insertion : tu construis tout (en mémoire) et tu insères le tout en une fois.

    On peut aussi utiliser un fragment de document : https://developer.mozilla.org/fr/doc...cumentFragment ...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    J'ai du poster il y a quelques années un script pour construire des tableaux rapidement ...

    Ha le voilà https://www.developpez.net/forums/d4...us-rapidement/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    @Spafy
    Et même, en actualisant un peu ton code
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
      <title>...</title>
    <style>
    td {text-align:center;min-width:25px;border:solid 1px gray;font-size:8px;height:25px;
    }
    </style>
    <script type='text/javascript'>
    window.addEventListener("load",()=>{
    console.time()
            BuildTable(document.body,100,100);
            console.timeEnd()
    },false);
     
    function BuildTable(parent,h,w){
            const xtable=document.createElement('table'),
            xtbody=document.createElement('tbody'),
            xtr=document.createElement('tr'),
            xtd=document.createElement('td'),
            t=[];
            for(let i=0;i<h;i++){
                    t[i]=xtbody.appendChild(xtr.cloneNode());
            };
            t.forEach((v,i)=>{
                    for(let j=0;j<w;j++){
                            v.appendChild(xtd.cloneNode()).textContent=i+"-"+j
                    }
            }
            );
            xtable.appendChild(xtbody)
            parent.appendChild(xtable);     
    }
    </script>
    </head>
    <body>
    </body>
    </html>

Discussions similaires

  1. [Dojo] insertion d'éléments dans une colonne d'un tableau
    Par tapoutapou dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 23/06/2010, 10h56
  2. [Free Pascal] Insertion d'éléments dans une liste chaînée
    Par Pacorabanix dans le forum Free Pascal
    Réponses: 4
    Dernier message: 20/04/2010, 00h42
  3. [DOM] Insertion d'élément dans un fichier XML en PHP
    Par marcus13 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/04/2008, 13h51
  4. pb Insertion d'éléments dans une table avec mySql++
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 24/02/2008, 00h39
  5. [debutant] insertion d'éléments dans une List
    Par gwenou60 dans le forum Composants
    Réponses: 1
    Dernier message: 05/12/2005, 09h59

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