Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes de DOM

mon élement se "déplace"

    18 avril 2006 à 17:03:30

    Bonjour à tous :)

    J'ai un petit pb en javascript : je dois avec mon javascript, insérer un élément dans certaines cases d'un tableau. Les cases sont référencées dans un Array() et je parcours ma table HTML avec 2 boucles for. à chaque fois que c'est nécessaire, j'ajoute un élément et ce en reprenant le même nom de vriable, ce qui a pour effet de supprimer l'élément ajouté avant.

    Voilà un morceau du code :

    for ( i = 1 ; i < MA_lignes.length ; i++ )
            {
            // parcours des lignes
            MA_cellules = MA_lignes.item(i).getElementsByTagName('td') ;
            for ( j = 1 ; j < MA_cellules.length ; j++ )
                    {
                    MA_mine = MA_mines[MA_minX+j-1][MA_maxY-i+1] ;
                    if ( MA_mine != undefined )
                            {
                            if ( MA_mine == 1 )
                                    {
                                    couleur = '#FF4444' ;
                                    gras = 'bold' ;
                                    }
                            else if ( MA_mine == 2 )
                                    {
                                    couleur = '#FF2222' ;
                                    gras = 'bold' ;
                                    }
                            else if ( MA_mine == 3 )
                                    {
                                    couleur = '#880000' ;
                                    gras = 'bolder' ;
                                    }
                            else
                                    {
                                    couleur = '#FF0000' ;
                                    gras = 'bolder' ;
                                    }
                            MA_cellules.item(j).appendChild(MA_mine_br) ;
                           
                            MA_mine_span = top.document.createElement('span') ;
                                    MA_mine_span.style.color = couleur ;
                                    MA_mine_span.style.fontWeight = gras ;
                           
                            MA_mine_span.appendChild(MA_mine_texte) ;
                           
                            MA_cellules.item(j).appendChild(MA_mine_span) ;
                            }
                    }
            }


    Quelqu'un aurait-il une olution pour éviter ce "déplacement" ?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      18 avril 2006 à 17:23:16

      /me comprend pas
      ton titre est pas explicite, met un truc genre [js] parceque on peut pas le devinier sans venir ...

      deja le truc c'est que de l'experience que j'ai quand tu trifouille les tableau ac js t'a des vieux ecarts qui arrivent pouf pouf comme ca ...

      post un screen pour voir ou se situe le probleme parceque la rien qu'vec le code moi je peut pas deviner

      et enfin si ton tableau est du genre grand (ac bcp de cases) tu devrait oublier le dom... parceque le dom c'est bien mais niveau vitesse, rien ne vaut innerHTML ;)
      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2006 à 17:37:59

        En ait, le problème, c'est que quand je dois mettre l'élément suivant, celui placé avant se volatilise ...
        Admettons que j'ai à placer deux balises en 1/3 et 4/5, lorque je passe en 1/3, ça me mets la balise en 1/3, mais une fois arrivé en 4/5, ça me retire celle posée en 1/3.

        Edit : bon, beh j'ai trouvé :)
        Je suis obligé de recréer les noeuds à chaque itération. Voilà la source modifiée :
        for ( i = 1 ; i < MA_lignes.length ; i++ )
                {
                // parcours des lignes
                MA_cellules = MA_lignes.item(i).getElementsByTagName('td') ;
                for ( j = 1 ; j < MA_cellules.length ; j++ )
                        {
                        MA_mine = MA_mines[MA_minX+j-1][MA_maxY-i+1] ;
                        if ( MA_mine != undefined )
                                {
                                alert('Mine de type '+MA_mine) ;
                                if ( MA_mine == 1 )
                                        {
                                        couleur = '#FF4444' ;
                                        gras = 'bold' ;
                                        }
                                else if ( MA_mine == 2 )
                                        {
                                        couleur = '#FF2222' ;
                                        gras = 'bold' ;
                                        }
                                else if ( MA_mine == 3 )
                                        {
                                        couleur = '#880000' ;
                                        gras = 'bolder' ;
                                        }
                                else
                                        {
                                        couleur = '#FF0000' ;
                                        gras = 'bolder' ;
                                        }
                               
                                MA_mine_texte = top.document.createTextNode("!!\u00A0MINE\u00A0!!") ;
                                MA_mine_br = top.document.createElement('br') ;
                               
                                MA_cellules.item(j).appendChild(MA_mine_br) ;
                                MA_mine_span = top.document.createElement('span') ;
                                        MA_mine_span.style.color = couleur ;
                                        MA_mine_span.style.fontWeight = gras ;
                               
                                MA_mine_span.appendChild(MA_mine_texte) ;
                                alert('span chainé');
                               
                                MA_cellules.item(j).appendChild(MA_mine_span) ;
                                alert('On voit que la dernière.') ;
                                }
                        }
                }
        • Partager sur Facebook
        • Partager sur Twitter

        Problèmes de DOM

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown