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 :

différence getElementsByTag et getchildren


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut différence getElementsByTag et getchildren
    Bonjour,
    j'ai un p'tit probléme lorsque je recupére un element avec getchildren et que je fais un addevent dessus, cela marche.
    En revanche lorsque je récupére ce meme element en parcourant le tableau que j'ai rempli avec la fonction getelementbytagname je n'arrive pas a faire un addevent dessus.
    Mon code getchildren
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myHandle=item.getChildren()[0].getChildren()[0].getChildren()[1].getChildren()[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0];
    mon code getelementsbytagname
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var mesLignes=item.getElementsByTagName('DIV');
    		for(i=0;i<mesLignes.length;i++)
    		{
    			if(mesLignes[i].id=='HandleDrag')
    			{
    				myHandle=mesLignes[i];	
    			}
    		}
    et mon addevent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myHandle.addEvent('mousedown', function(e) {
    			e = new Event(e).stop();
    };
    Est ce que quelqu'un aurait une idée?
    Merci d'avance

  2. #2
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    essaye déjà avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mesLignes=item.getElementsByTagName('div');
    Le libellé du tag doit être en minuscules

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    je viens de tester avec les minuscules et sa ne change rien.
    j'ai comme erreur :
    cet objet ne gére pas cette propriété ou methode.

    Au niveau de mon addevent

  4. #4
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par locs Voir le message
    je viens de tester avec les minuscules et sa ne change rien.
    j'ai comme erreur :
    cet objet ne gére pas cette propriété ou methode.

    Au niveau de mon addevent
    Je n'ai pas dit qu'il n'y avait que ça : juste que c'est par là qu'il fallait commencer
    Sinon, l'évènement c'est 'onmousedown' et non 'mousedown' ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    je viens de tester avec 'onmousedown' et j'ai toujours la même erreur.
    Je comprend pas vraiment pas la.
    Ce que je trouve bizarre c'est qu'avec getchildren cela fonctionne.
    Et pas lorsque je récupére mon élément avec getelementbytagname????
    Bizarre

  6. #6
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par locs Voir le message
    Ce que je trouve bizarre c'est qu'avec getchildren cela fonctionne.
    Et pas lorsque je récupére mon élément avec getelementbytagname????
    Bizarre
    Ta fonction getchildren() cible certainement un conteneur.
    Alors que getElementsByTagName balaye toute ta page ...
    Essaye de faire ce même ciblage avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_conteneur').getElementsByTagName('div')
    'id_conteneur' étant le conteneur dont getchildren() récupère les enfants ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    En fait je le fait deja vu que au dessus du code que je vous ai donner je suis dans une boucle, cette boucle étant :
    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
     
    $$('.drag .item').each(function(item){
     
     
    		//myHandle=item.getChildren()[0].getChildren()[0].getChildren()[1].getChildren()[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0];
     
    		var mesLignes=item.getElementsByTagName('div');
    		for(i=0;i<mesLignes.length;i++)
    		{
    			if(mesLignes[i].id=='HandleDrag')
    			{
    				myHandle=mesLignes[i];	
    			}
    		}
     
    		myHandle.addEvent('mousedown', function(e) {
    			e = new Event(e).stop();
                             };
     
    }
    Le code complet est défini comme précédement et je ne comprend pas pkoi passer par un document.getelementbyid, vu que dans ma boucle la variable item correspond deja a un objet de ce type.

  8. #8
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par locs Voir le message
    Le code complet est défini comme précédement et je ne comprend pas pkoi passer par un document.getelementbyid,
    Et ben là c'était juste parce que tu nous avais pas donné le code complet

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    lol
    Par contre je continue a chercher de mon coter et je ne vois pas d'ou cela vient.
    Vous auriez une idées?

  10. #10
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut getchildren parcours page html
    Bonjour, est ce que quelqu'un connaitré une fonction qui me permet de parcourir une page html de maniére a trouver un element par rapport a son ID et qui utiliseré getChildren?
    C'est pour eviter d'avoir a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myHandle=item.getChildren()[0].getChildren()[0].getChildren()[1].getChildren()[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0];

  11. #11
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Je pensais que tu pouvais le déduire de ma précédente réponse ...
    L'accès via l'ID ne nécessite aucun "parcours" puisqu'il s'agit d'un accès direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ton_element = document.getElementById('id_de_ton_element');
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    Le probléme qui se pose c que g différent bloc qui ont tous un meme id.
    C'est d'ailleur pour ca que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $$('.drag .item').each(function(item){
    qui me permet de parcourir chacun de mais ou je retrouve dans chacun l'element que je veux cibler avec un id identique a chaque fois.

    Et le document.getElementById ne fonctionne que pour la totalité de mes documents, or est-il possible de faire la meme chose mais seulement sur un bloc précis de code html d'une page?

  13. #13
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par locs Voir le message
    Le probléme qui se pose c que g différent bloc qui ont tous un meme id.
    Alors ne cherche pas plus loin : c'est là ton principal problème !
    Un ID doit toujours être unique dans la page ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  14. #14
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    beh je dois bien pouvoir faire en sorte de définir un handle sur des bloc drag&drop avec un id unique en spécifiant que l'élément de cahque ayant cet id sont les handle des blocs??

  15. #15
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ça nous aiderait sans doute de voir aussi la structure du html scanné ..
    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 !

  16. #16
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Je pense que tu n'as pas le droit d'utiliser le mot "item" comme variable, c'est un mot protégé.

  17. #17
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    le code html ressemble a ca :
    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
    58
    59
    60
    61
    62
    63
    64
    65
     
     <tr>
    		<td class="drag"><div class="item" mXattribut="id:id_annonce"><table border="0" cellpadding="0" cellspacing="0">
    			<tr id="test">
    			  <td class="fond-annonce-HG" id="test">&nbsp;</td>
    			  <td class="fond-annonce-H" id="test">&nbsp;</td>
    			  <td class="fond-annonce-HD" id="test">&nbsp;</td>
    			</tr>
    			<tr mXattribut="class:classAnnonce">
    			  <td class="fond-annonce-G">&nbsp;</td>
    			  <td class="fond-annonce">
    			  <table border="0" cellpadding="0" cellspacing="0">
    				  <tr >
    					<td class="fond-titre-annonce"><table width="415" id="test">
     
    						<tr>
     
    						  <td valign="top"><div id="HandleDrag"><span class="titre-annonce" id="natureLot"><mx:text id="Nature"/></span></div></td>
    						  <td>&nbsp;</td>
    						  <td class="texte-annonce"><div align="right"><span class="titre-annonce" id="prixLot"><mx:text id="Prix"/></span></div></td>
     
    						</tr>
     
    					</table></td>
    				  </tr>
    				  <tr >
    					<td >
    						<table width="415" >
    						  <tr>
    							  <td rowspan="2" valign="top"><div class="ImgDetail" style="background-image:url('<mx:text id="imageLot"/>');width:128px;height:95px;z-index:1;background-repeat:no-repeat;" mXattribut="id:id_annonce"></div></td>
    							  <td rowspan="2" >&nbsp;</td>
    							  <td valign="top" ><span class="texte-annonce"><span onmouseover="montre('<mx:text id="texteLotEntier"/>')" onmouseout="cache();"><mx:text id="texteLot"/></span><br><mx:text id="Ville"/> -<br>, <mx:text id="CodePostal"/>, <mx:text id="Superficie"/>m&sup2;, Ref.<mx:text id="Mandat"/></span>
    							  </td>
    						  </tr>
    						  <tr >
    						  <td>
    							<table border="0" cellspacing="0" cellpadding="0" >
    						 	<tr id="test">
    							  <td><img src="themes/theme_0/image/logo/Logo_detail.gif" alt="Localiser" width="16" height="16" mxattribut="onclick:link_jsdetail"/></td>
    							  <td>&nbsp;</td>
    							  <td><img src="themes/theme_0/image/logo/Logo_localiser.gif" alt="Calculer votre mensualit&eacute;" width="16" height="16" /></td>
    							  <td>&nbsp;</td>
    							  <td><img src="themes/theme_0/image/logo/Logo_mensualite.gif" alt="Calculer votre mensualit&eacute;" width="16" height="16" /></td>
    							  <td>&nbsp;</td>
    							  <td><img src="themes/theme_0/image/logo/Logo_imprimer.gif" alt="Imprimer" width="16" height="16" /></td>
    							  <td>&nbsp;</td>
    							  <td ><img alt="Votre panier" src="themes/theme_0/image/Shopping.png" name="imageDrag" alt="Ajouter a votre panier" id="imageDrag"/></td>				 
    							</tr>
        				        </table>
     
    						 </td>
    			  			</tr>
    					</table></td>
    				  </tr>
     
    			  </table></td>
    			  <td class="fond-annonce-D">&nbsp;</td>
    			</tr>
    			<tr>
    			  <td class="fond-annonce-BG">&nbsp;</td>
    			  <td class="fond-annonce-B">&nbsp;</td>
    			  <td class="fond-annonce-BD">&nbsp;</td>
    			</tr>
    		</table></div></td>		
    	  </tr>
    En fait il s'agit de bloc comme celui la qui sont répéter plusieur fois sur ma page.
    Avec la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $$('.drag .item').each(function(item){.....}
    Je parcours chacun de ces blocs afin de positionner sur chacun le handle pours les drag and drop. Cela marche lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myHandle=item.getChildren()[0].getChildren()[0].getChildren()[1].getChildren()[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0].getChildren()[0];
    en revanche lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    var mesLignes=item.getElementsByTagName('div');
    		for(i=0;i<mesLignes.length;i++)
    		{
    			if(mesLignes[i].id=='HandleDrag')
    			{
    				myHandle=mesLignes[i];	
    			}
    		}
    J'arrive bien a me positioner sur le bon élement par contre au moment d'y affecter l'évenement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	myHandle.addEvent('mousedown', function(e) {
    			e = new Event(e).stop();
    };
    J'ai l'erreur "Cette objet ne supporte pas cette proriété ou cette méthode", ce qui n'est pas le cas avec les getChildren().

    Alors je supposse que la fonction getElementBytagName ne retourne pas le même type d'objet que getChildren. Je me demandé alors s'il était possible de trouver l'équivalent de getChildren avec le DOM ou serait-il possible avec GetChildren() de parcours récurssivement un code HTML(ce que j'essaye de faire mais ou je bloque avec la meme erreur que précédement)?
    Voila en espérant avoir été suffisament claire....
    Merci pour vos réponses.

  18. #18
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Donc quand tu parlais de tableau tu parlais bien de la balise <table>

    un tableau à un tbody ...

    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mesLignes=item.getElementsByTagNamle('tbody')[0].getElementsByTagName('div');
    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 !

  19. #19
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    Cela viendrait du fait que j'aipas mit les tbody dans mon code html alors?

  20. #20
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    que tu les mette ou non n'a pas réellement d'importance pour javascript ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <table id='montableau'>
    	<tr>
    		<td>coucou</td>
    	</tr>
    </table>
    <script type='text/javascript'>
    alert(document.getElementById('montableau').getElementsByTagName('tbody').length)
    </script>
    pour le DOM il y en a un ...
    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 !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25
  3. [CR][Jetform] Quelles sont les différences ?
    Par littlecow dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/07/2002, 11h40
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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