begin process at 2012 05 29 01:04:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Fonctionnement d'une propriété d'un navigateur

 > 

bug getElementsByName ( ) sous IE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

bug getElementsByName ( ) sous IE

mardi 22 août 2006 à 08:17:13 | bug getElementsByName ( ) sous IE

Evangun

Bonjour à tous,
j'ai une question simple : connaissez-vous des bugs qui expliqueraient que sous Internet Explorer je n'arrive pas à compter le nombre d'objets ayant "artiste" pour Name ? Ca me renvoie toujours 0. Alors qu'évidemment ça marche parfaitement sous Firefox.

var p=document.getElementsByName('artiste').length;
alert(p);

merci d'avance !
mardi 22 août 2006 à 08:30:53 | Re : bug getElementsByName ( ) sous IE

econs

Administrateur CodeS-SourceS
Réponse acceptée !


Salut,

La fonction getElementsByName() utilise en fait l'attribut ID et non le NAME dans IE.
Rajoute ce qui est en gras.



<input type="text" name="leNom" id="leNom">

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
mardi 22 août 2006 à 10:22:49 | Re : bug getElementsByName ( ) sous IE

bultez

Membre Club




bonjour,

euh... chez moi, avec IE, tout baigne ?!!?
exemple tiré de SelfHtml ( alert ajouté, c'est tout )

<html><head><title>Test</title>
<style type="text/css">
<!--
.normal { font-style:normal }
-->
</style>
<script type="text/javascript">
<!--
 function cocher()
{
 document.getElementsByName("ingredient")[0].checked = true;
 alert(document.getElementsByName("ingredient").length);
}
//-->
</script>
</head><body>
<form name="formulaire" action="">
<input type="checkbox" name="ingredient" value="Salami"> Salami <br>
<input type="checkbox" name="ingredient" value="champignons"> champignons <br>
<input type="checkbox" name="ingredient" value="olives"> olives <br>
<input type="button" value="Test" onClick="cocher()">
</form>
</body></html>


cordialement 
  Bul    
Site      M'écrire
mardi 22 août 2006 à 15:27:26 | Re : bug getElementsByName ( ) sous IE

Evangun

Bonjour, merci de m'avoir répondu aussi rapidement.

Après vérification, vous avez tous les deux raisons :

econs --> j'ai testé avec les id, c'est effectivement ça qu'il compte. Mais c'est embêtant, car théoriquement on n'est pas censé donner le même ID à plusieurs objets, même si ça marche.

Bultez --> getElementByName marche dans d'autres cas, je l'utilise moi-même souvent.

Alors je vous livre deux morceaux de code si vous voulez faire le test :
Le premier est celui de ma page en entier, le get Name ne marche pas.
Le deuxième est le même code où j'ai supprimé tout ce qui était superflu par rapport au getName. Et là ça marche.
Il y a donc une interférence quelque part. Je n'ai malheureusement pas le temps techniquement de faire un débuggage, donc je vais me débrouiller avec les ID.

J'attends un petit peu avant d'accepter vos réponses, si vous aviez d'autres suggestions avant. Merci encore

PS: pour tester le code, appuyez sur le deuxième P


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
    <title>Music Test</title>
    <meta name="robots" content="index,nofollow">
    <link href="styles_communs.css" rel="stylesheet" type="text/css">
    <link href="styles_disco.css" rel="stylesheet" type="text/css">
   
    <script>
       
        function expand(i){
            if(expand[i] == '0'){
                document.getElementById('img_'+i).src='./images/moins.gif';
                expand[i] = '1';
                var taille = document.getElementsByName('artiste_'+i+'_sub').length;
                for(j=0; j<taille; j++){
                    document.getElementsByName('artiste_'+i+'_sub')[j].style.display = 'none';
                }
            }
            else {
                document.getElementById('img_'+i).src='./images/plus.gif';
                expand[i] = '0';
                var n = document.getElementsByName('artiste_'+i).length;
                alert(n);
                for(j=0; j<n; j++){
                    //document.getElementsByName('artiste_'+i+'_sub')[j].style.display = '';
                }
            }
        }   
   
   
        var l=0;    // l est la chanson de libre écoute active
       
        function highlight(i){
            if(i!=l){
                document.getElementById('morceau_'+i).className='tr_selected';
            }
        }
       
        function unhighlight(i){
            if(i!=l){
                document.getElementById('morceau_'+i).className='';
            }
        }
       
        function select(i){
            if(i!=l){
               
                highlight(i);

                m=l;
                l=i;
                if(m!=0){
                    unhighlight(m);
                }
               

            }
        }
   
        function check(){
            var p=document.getElementsByName('artiste_1_sub').length;
            alert(p);
        }

   
    </script>
 
</head>

<body>

<div id="page">
    <div id="menu_haut">
    </div>

    <div id="discotheque_haut">
    </div>
   
    <div id="discotheque_milieu">
   
        <span id="header_artiste">Artiste</span><span id="header_album">Album</span><span id="header_ecoutes">Ecoutes</span><span id="header_suppr">Suppr.</span>
       
        <div id="affichage">
            <table>
                <tr id="artiste_1">
                    <td class="artiste"><a href="javascript: void(0)" onclick="expand('1');"><img id="img_1" src="./images/plus.gif" alt="P" /></a> <img class="image_man" src="./images/man.gif"> Sheryl Crow</td>
                    <td class="album"></td>
                    <td class="ecoutes"></td>
                    <td class="suppr"></td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_1" onmouseover="highlight('1');" onmouseout="unhighlight('1');" onclick="select('1');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_2" onmouseover="highlight('2');" onmouseout="unhighlight('2');" onclick="select('2');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_3" onmouseover="highlight('3');" onmouseout="unhighlight('3');" onclick="select('3');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr>
                    <td class="artiste"><a href="javascript: void(0)" onclick="check();"><img src="./images/plus.gif" alt="P" /></a> <img class="image_man" src="./images/man.gif"> Sheryl Crow</td>
                    <td class="album"></td>
                    <td class="ecoutes"></td>
                    <td></td>
                </tr>
                <tr>
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr>
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr>
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
               
            </table>
        </div>
   
    </div>
   
    <div id="discotheque_bas">
    </div>


</div>

</body>

</html>


///////////////////////// FIN DU PREMIER CODE ////////////////////


///////// DEUXIEME CODE ///////////

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
    <title>Music Test</title>
    <meta name="robots" content="index,nofollow">
    <link href="styles_communs.css" rel="stylesheet" type="text/css">
    <link href="styles_disco.css" rel="stylesheet" type="text/css">
   
    <script>

   
        function check(){
            var p=document.getElementsByName('artiste_1_sub').length;
            alert(p);
        }

   
    </script>
 
</head>

<body>


                <table>
                <tr id="artiste_1">
                    <td class="artiste"><a href="javascript: void(0)" onclick="expand('1');"><img id="img_1" src="./images/plus.gif" alt="P" /></a> <img class="image_man" src="./images/man.gif"> Sheryl Crow</td>
                    <td class="album"></td>
                    <td class="ecoutes"></td>
                    <td class="suppr"></td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_1" onmouseover="highlight('1');" onmouseout="unhighlight('1');" onclick="select('1');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_2" onmouseover="highlight('2');" onmouseout="unhighlight('2');" onclick="select('2');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr name="artiste_1_sub" id="morceau_3" onmouseover="highlight('3');" onmouseout="unhighlight('3');" onclick="select('3');">
                    <td class="artiste"><img class="image_note" src="./images/note.gif">Strong enough</td>
                    <td class="album">Tuesday night music club</td>
                    <td class="ecoutes">3</td>
                    <td>su</td>
                </tr>
                <tr>
                    <td class="artiste"><a href="javascript: void(0)" onclick="check();"><img src="./images/plus.gif" alt="P" /></a> <img class="image_man" src="./images/man.gif"> Sheryl Crow</td>
                    <td class="album"></td>
                    <td class="ecoutes"></td>
                    <td></td>
                </tr>

               
            </table>

</body>

</html>

mardi 22 août 2006 à 15:52:55 | Re : bug getElementsByName ( ) sous IE

Evangun

J'ai un peu honte de cette solution, mais ça marche bien sous IE et Firefox si j'écris :

                <tr name="artiste_1_sub" id="artiste_1_sub" id="morceau_1">
                </tr>
                <tr name="artiste_1_sub" id="artiste_1_sub" id="morceau_2">
                </tr>

eh oui, il y a bien 2 identiques et en plus 2 id par objet. J'ai peur que ça ne passe pas sur d'autres navigateurs mais bon, en attendant mieux...
mardi 22 août 2006 à 15:53:15 | Re : bug getElementsByName ( ) sous IE

bultez

Membre Club
Réponse acceptée !

alors avec IE, dans le 2ème exemple, ça baigne pas :
            document.getElementsByName("artiste_1_sub").length = 0

si on met ID, comme suggéré par econs, bien entendu, il a raison : ça baigne

si on met textarea au lieu de tr.... ça baigne !

quelque chose m'échappe....
ou un bug du traitement des name sur TR par IE ?

cordialement 
  Bul    
Site      M'écrire
mardi 22 août 2006 à 16:00:39 | Re : bug getElementsByName ( ) sous IE

bultez

Membre Club
mais plutôt que getelementByName,
pourquoi ne pas utiliser formulaire.artiste_1_sub ?
et si 1 "est variable" formulaire["artiste_"+numero+"_sub"]... 
      par exemple.
là syntaxe valide et ça fonctionne pour tous (?) les navigateurs
mais enfin... pas satisfaisant pour getElementByName.
cordialement   Bul  
  
Site      M'écrire
mardi 22 août 2006 à 16:02:09 | Re : bug getElementsByName ( ) sous IE

Evangun

ha non, je retire ce que j'ai dit, ça bloque une autre fonction. Et j'ai besoin de garder les id tels qu'ils existent déjà.
arg au secours !
mardi 22 août 2006 à 16:05:13 | Re : bug getElementsByName ( ) sous IE

Evangun

Merci Bultez, j'essaie tout de suite !
je n'ai pas du tout les réflexes Javascript : moi je me voyais partir dans le dom ou les champs cachés... à tout de suite
mardi 22 août 2006 à 16:09:07 | Re : bug getElementsByName ( ) sous IE

bultez

Membre Club
moi aussi, j'ai dit une connerie (**)
même avec frm["nom"] avec IE, çà ne semble pas marcher.
met des id différents ?
id="
="artiste_1_sub", id="="artiste_2_sub",....
et une boucle
i=1;
while document.getElementById("artiste_"+i+"_sub")
{
   traitement de document.getElementById("artiste_"+i+"_sub")
   i++;
}
cordialement   Bul   
 Site    M'écrire
** c'est pas la 1ère, mais je puis affirmer
que ce ne sera pas la dernière.

1 2

Cette discussion est classée dans : ie, bug, artiste, getelementsbyname


Répondre à ce message

Sujets en rapport avec ce message

PB Dreamwaver/IE 6.0 affichage qui bug !! [ par hyunkel69 ] En fait j'utilise Dreamwaver pour aller vite car j'ai plein d'autre truc a faire, mais j'ai un site à faire pour une boite... j'utilise un CSS, avec l Bug d'affichage des div avec IE [ par yosh ] Bonjour à tous, Je voudrais savoir si vous avez déjà eu des soucis avec les div et internet explorer Au chargement de ma page j'utilise la propriété Problème de cadre autour d'un div [ par flexx ] Bonjour J'ai créé un div avec une bordure d'un pixel noire et mon cadre apparait de façon bizarre dans le coin inférieur gauche du div sous IE 6. En Bug IE avec mon menu [ par lebeef ] Bonjour à toutes et à tous,J'ai presque finis mon site internet et je voudrait maintenant corriger un bug que j'ai avec IE.Le bug est le suivant : Lor Bug de transparence [ par Evangun ] Bonjour à tous, quelqu'un saurait-il comment éviter le bug d'IE avec la transparence que je détaille en-dessous ? C'est le bug qui fait qu'au lieu de fct getElementsByName sous IE [ par lesly75 ] Bjr à tous, je rencontre un problème avec la fct getElementsByName sous IE. j'essaye (depuis 6 heures env !!) de recupérer le nbre de div ayant un n Bug de IE [ par Arto_8000 ] Sans grande surprise je suis tombé sur un bug plutôt difficile à contourner de IE. J'explique : Sous IE mon amour ... [ par caviar ] saluté,   pfff ... j'en peux plus ... Je crois que je vais partir me jeter d'un pont ...vous pouvez m'expliquer pourquoi ça ça marche sous FF et pas probleme compatibilité IE pour menu déroulant [ par Airfaz ] Bonjour à tous,j'essaie de réaliser un site pour un lycée en html et CSS auquel j'ai ajouté un menu déroulant horizontal en javascript.je travaille av


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales