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] DOM : difficulté d'affichage


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut [DOM] DOM : difficulté d'affichage
    J'ai écrit un code assez simple qui me permet de construire un tableau en DOM, dans une boucle.

    Cependant seulement mes premiers éléments viennent s'afficher, la boucle se refait bien pour le bon nombre d'éléments, cependant ces derniers ne viennent pas s'ajouter au reste du tableau, je pense qu'il doit s'agir d'une erreur au moment ou j'assigne le nom des vraiables, mais je n'en suis pas sur...

    Voici mon code, légèrement simplifié :
    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
     
            var nouveauDiv=document.createElement('DIV');
    	var tableau=document.createElement('table');
    	var tblBody = document.createElement('tbody');
    	for (i=0;i<Liste.length;i++)
    	{		
    		var tr=document.createElement('tr');
    		var td=document.createElement('td');
    		var nouveauSpan=document.createTextNode(Liste[i]);
    		td.appendChild(nouveauSpan);
    		td.style.width=250+"px";
    		setStylePourElement(td,"TdDiv");
    		td.onmouseover=divOnMouseOver;
        	td.onmouseout=divOnMouseOut;
    		td.onclick=divOnClick;
     
    		var borderLeftRight=3;
      		var borderTopBottom=3;
     
    		td.style.borderRight=borderLeftRight+"px outset";
      		td.style.borderLeft=borderLeftRight+"px outset";
      		td.style.borderTop=borderTopBottom+"px outset";
      		td.style.borderBottom=borderTopBottom+"px outset";
    		tr.appendChild(td);
    		i++;
    		if (Liste[i])
    		{
    			var td2=document.createElement('td');
    			var nouveauSpan2=document.createTextNode(Liste[i]);
    			td2.appendChild(nouveauSpan2);
    			td2.style.width=250+"px";
    			setStylePourElement(td2,"TdDiv");
    			td2.onmouseover=divOnMouseOver;
        		td2.onmouseout=divOnMouseOut;
    			td2.onclick=divOnClick;
    		}
    		else
    		{
    			var td2=document.createElement('td');
    			td2.value="&nbsp;";
    		}
    		td2.style.borderRight=borderLeftRight+"px outset";
      		td2.style.borderLeft=borderLeftRight+"px outset";
      		td2.style.borderTop=borderTopBottom+"px outset";
      		td2.style.borderBottom=borderTopBottom+"px outset";
    		tr.appendChild(td2);
    		tblBody.appendChild(tr);
    	}
    	tableau.appendChild(tblBody);
    	nouveauDiv.appendChild(tableau);
    	_completeDiv.appendChild(nouveauDiv);
    	_completeDiv.height=30*i+4;
    	showCompleteDiv(_completeDiv);
    }
    Merci pour votre aide par avance.

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    le script étant incomplet cela risque d'être difficile , car a première vue pas de soucis de code ...

    aurais tu un exemple en ligne ??

    ou le code complet

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Edité avec la fonction en entier, le code complet est très long et indigeste (car pas commenté, mea culpa...)

    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
    function OuvrirMenu(Liste,color)
    	creeAutocompletionDiv(color);
    	var nouveauDiv=document.createElement('DIV');
    	setStylePourElement(nouveauDiv,"AutoCompleteDiv");
    	var tableau=document.createElement('table');
    	var tblBody = document.createElement('tbody');
    	for (i=0;i<Liste.length;i++)
    	{		
    		var tr=document.createElement('tr');
    		var td=document.createElement('td');
    		var nouveauSpan=document.createTextNode(Liste[i]);
                    alert(Liste[i]);
    		td.appendChild(nouveauSpan);
    		td.style.width=250+"px";
    		setStylePourElement(td,"TdDiv");
    		td.onmouseover=divOnMouseOver;
        	td.onmouseout=divOnMouseOut;
    		td.onclick=divOnClick;
     
    		var borderLeftRight=3;
      		var borderTopBottom=3;
     
    		td.style.borderRight=borderLeftRight+"px outset";
      		td.style.borderLeft=borderLeftRight+"px outset";
      		td.style.borderTop=borderTopBottom+"px outset";
      		td.style.borderBottom=borderTopBottom+"px outset";
    		tr.appendChild(td);
    		i++;
    		if (Liste[i])
    		{
    			var td2=document.createElement('td');
    			var nouveauSpan2=document.createTextNode(Liste[i]);
    			td2.appendChild(nouveauSpan2);
    			td2.style.width=250+"px";
    			setStylePourElement(td2,"TdDiv");
    			td2.onmouseover=divOnMouseOver;
        		td2.onmouseout=divOnMouseOut;
    			td2.onclick=divOnClick;
    		}
    		else
    		{
    			var td2=document.createElement('td');
    			td2.value="&nbsp;";
    		}
    		td2.style.borderRight=borderLeftRight+"px outset";
      		td2.style.borderLeft=borderLeftRight+"px outset";
      		td2.style.borderTop=borderTopBottom+"px outset";
      		td2.style.borderBottom=borderTopBottom+"px outset";
    		tr.appendChild(td2);
    		tblBody.appendChild(tr);
    	}
    	tableau.appendChild(tblBody);
    	nouveauDiv.appendChild(tableau);
    	_completeDiv.appendChild(nouveauDiv);
    	_completeDiv.height=30*i+4;
    	showCompleteDiv(_completeDiv);
    }
    Color : contient un code couleur en héxa

    Liste est un tableau contenant différents textes et le alert(Liste[i]) me retourne bien au fur et à mesure de la boucle les textes que je souhaite afficher.

    Cependant avant je créais un tableau différent à chaque ligne et cela fonctionnait, depuis que j'ai sorti la création de tableau de la boucle, pour pouvoir plus facilement aligner mon menu, il n'y a plus que le premier tr qui s'affiche...

    Code de la fonction qui pourrait bugger aussi, mais je ne vois pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function showCompleteDiv(Div)
    {
      Div.style.visibility="visible";
    }

  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,
    y a un truc de bizarre : à cause de cette conditiontu risques de te retrouver avec des lignes à 1 td et d'autres à 2 td.
    La structure de ton tableau n'est pas correcte dans ce cas ...

    EDIT : Arf, non, y a un else, donc toujours 2 td

    A+

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Ah j'ai peut-être trouvé :

    J'ai dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var td2=document.createElement('td');
    td2.value="&nbsp;";
    Mais le td2.value, doit être incorrect et donc me créer un problème puisque parfois 1 td et parfois 2... Ca vient peut-être de ca, je vais essayer de modifier cela.

  6. #6
    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 tusssss Voir le message
    Mais le td2.value, doit être incorrect
    C'est surtout qu'un td n'a pas de value

    => createTextNode("&nbsp;")

    A+

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

Discussions similaires

  1. [DOM] Informations sur l'affichage des informations récupérer via Xpath Query
    Par Space Cowboy dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 26/11/2010, 16h57
  2. [DOM] DOM: affichage des modifications
    Par Bengo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2007, 16h24
  3. [DOM] dom et ie
    Par jeff_! dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/12/2005, 10h03
  4. [DOM] Dom -> Bug?!
    Par Zenol dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 11/11/2005, 12h49
  5. [DOM] DOM et couleur de texte
    Par watcha2020 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/08/2005, 10h20

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