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 :

getElementsByName IE & FF


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut getElementsByName IE & FF
    Bonjour,

    J'ai une différence entre IE7-IE8 et FF sur l'instruction getElementsByName

    Sous FF, la taille du tableau retourné est correcte (2) alors que sous IE j'ai systématiquement 0.

    Le code est JS est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script type="text/javascript"> 
    var nb = document.getElementsByName("cpc");
    alert(nb.length); 
    </script>
    J'avoue que je ne comprend pas pourquoi, IE me renvoi 0 alors que j'attend 2 ?




    l'ensemble de la page :
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>...</title>
    <style type="text/css">
    .boite {
    	position:relative;
    	width:100%;
    	overflow:hidden;
    	background-color:#ff0000;
    }
     
    .t{	text-align:center;
    	font-size:20px;
    	font-weight:bold;
    	background-color:#ffff00;
    	cursor:pointer;
    }
     
     
    .m{	position:absolute;
    	padding:10px;
     
    }	
    </style>
    <script type="text/javascript"> 
    var nb = document.getElementsByName("cpc");
    alert(nb.length); 
    </script> 
    </head>
    <body>
    <div id="cadre">
     
    	<div id="boite0" name="cpc" class="boite">
    		<div id="t0" class="t">CPC0</div>
    		<div id="m0" class="m">
    			<div>XC036</div>
    		   <div>XC036</div>
    		   <div>XC036</div>
    		   <div>XC036</div>
    		</div>
    	</div>
    	<div id="boite1" name="cpc" class="boite">
    		<div id="t1" class="t">CPC1</div>
    		<div id="m1" class="m">
    			<div>XC036</div>
    		   <div>XC036</div>
    		   <div>XC036</div>
    		   <div>XC036</div>
    		</div>
    	</div>
    </div>
    </body>
    </html>
    Un petit coup de main serait apprécié
    MERCI

  2. #2
    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
    parce que ton script est lancé trop tot, les objets ne sont pas encore instanciés
    soit tu mets ton script après les objets dans le flux,
    soit tu mets ton script dasn une fonction que tu lances sur le onlaod
    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 !

  3. #3
    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
    ceci dit, un attibut name pour un div, ça n'a pas de sens;

  4. #4
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour vos réponse, je vais ajouter un setTimeout un onload

    La raison du name sur certain DIV est afin de pouvoir sélectionner uniquement ces DIV pour faire une menu type accordion. Comme je voulais conserver les ID uniques j'ai attribué un name. Mais s'il existe une solution plus propre je suis preneur.

    MERCI

  5. #5
    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
    plus propre oui
    getElementsByCLassName pour les navs récents ou jquery avec ses selecteurs puissants
    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 !

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    d'après la doc MSDN IE ne reconnaît pas l'attribut name sur les DIV
    Attr Constructor, A, APPLET, attribute, BUTTON, EMBED, FORM, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=hidden, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, LINK, MAP, OBJECT, RT, RUBY, SELECT, TEXTAREA, HTMLAnchorElement Constructor, HTMLButtonElement Constructor, HTMLEmbedElement Constructor, HTMLFormElement Constructor, HTMLImageElement Constructor, HTMLInputElement Constructor, HTMLMapElement Constructor, HTMLObjectElement Constructor, HTMLSelectElement Constructor, HTMLTextAreaElement Constructor

  7. #7
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    getElementsByClassName, est certainement la meilleur solution sans jquery.

    MERCI à tous pour vos réponses.

  8. #8
    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
    getElementsByClassName, est certainement la meilleur solution sans jquery.
    oui mais uniquement sur les versions les plus récentes de certains navigatuers ...
    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 !

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Et ton fameux script Spaffy?

    A+.

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

Discussions similaires

  1. getElementsByName ou getElementById
    Par lepierre dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/10/2004, 15h44

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