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 :

[IE vs FF] getElementsByName sur objet dynamique


Sujet :

JavaScript

  1. #21
    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 TSalm
    oui, et ça ne fonctionne pas sur des elements créés dynamiquement
    Parce que ta fonction est générée dynamiquement, pas à cause de l'objet qui a le name ...
    Essaye en faisant un fonction "normale" (sans essayer de redéfinir getElementsByName).

    A+
    Pour tout savoir sur l'utilisation du forum

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

  2. #22
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bon, je débarque un peu dans ta discussion....

    Si j'ai bien compris tu cherches à accèder à des éléments créé dynamiquement par leur name sous IE getElementsByname te cause des soucis.

    Je peux voir ton script qui créé tes éléments ?


    Et puis si ça t'intéresse j'ai IE5

  3. #23
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    une sombre histoire de .name en majuscule ou minuscule tu penses?

  4. #24
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Faut pas avoir honte d'avoir IE5, faut juste avoir honte de n'avoir QUE IE5

    J'ai posté du code pour test (mon 3 message dans ce fil)
    Pour voir la différence, il suffit d'enlever la redefinition du getElementsByName

  5. #25
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Dans un de tes posts, pourquoi dis-tu que la recherche par tagName ne te conviens pas ?

    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
     
    function rechercheParNom(nomRecherche)
    {
      var listeEl = new Array("select","option","input");
      var tab, lListe, lTab, i, j;
     
      lListe = listeEl.length;
     
      for (i=0; i<lListe; i++)
      {
        tab = document.getElementsByTagName(listeEl[i]);
        lTab = tab.length;
        for (j=0;j<lTab; j++)
        {
          if (tab[j].name==nomRecherche)
             alert(tab[j].tagName+" "+tab[j].name);
        }
      }
     
    }
    Le script est assez rapide...

    J'ignore si ça peut t'aider, as-tu lu cette remarque, que j'ai posté :
    http://www.developpez.net/forums/sho...d.php?t=284119 (il y a divers liens dans ce post) ?

    J'ai aussi Firefox

  6. #26
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Salut à tous,

    et merci pour vos réponses.

    Ton code est excellent Auteur, il permet de lacher simplement la fonction récursive, il faut ajouter tout les types de tags possibles (du plus fréquent au moins et c'est bon).

    Je vais voir ça tout de suite.
    merci,
    TSalm

    ps: au fait, il fonctionne pas ou pas mon code sous IE5 ?

  7. #27
    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 TSalm
    ps: au fait, il fonctionne pas ou pas mon code sous IE5 ?
    Quel optimisme
    Pour tout savoir sur l'utilisation du forum

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

  8. #28
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut


    Ca fonctionne parfaitement avec un gain de vitesse carrément hallucinant !!
    Voici le code final de la fonction :

    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
     
    // ============ 
    // getElementsByName pour IE :
    // Définition d'un getElementsByName pour IE :
    // Raison: getElementsByName de IE ne trouve pas les objets dynamiques
    // Testé avec IE6:ok 
     
    // cherche un élément par son nom dans le DOM
    // (sort dès qu'un est trouvé !)
     
    var listeEl=new Array();
    function rechercheParNom(nomRecherche)
    {
     
      //var listeEl = new Array("select","input","option","td","tr","table");
     
      var tab,lListe,lTab,i,j;
     
      lListe = listeEl.length;
     
      for (i=0; i<lListe; i++)
      {
        tab = document.getElementsByTagName(listeEl[i]);
        lTab = tab.length;
        for (j=lTab-1;j>=0; j--)
        {
          if (tab[j].name==nomRecherche)
             return tab[j];
        }
      }
     
      return null;
     
    }
     
    function Init_IE_getElementsByName() {
      // pour optimisation: mettre les tagName dans cette liste du plus frequent au moins:
      listeEl="SELECT,INPUT,OPTION,A,ABBR,ACRONYM,ADDRESS,APPLET,AREA,B,BASE,BASEFONT,BDO,BGSOUND,BIG,BLOCKQUOTE,BODY,BR,BUTTON,CAPTION,CENTER,CITE,CODE,COL,COLGROUP,COMMENT,CUSTOM,DD,DEL,DFN,DIR,DIV,DL,!DOCTYPE,DT,EM,EMBED,FIELDSET,FONT,FORM,FRAME,FRAMESET,HEAD,hn,HR,HTML Comment,HTML,I,IFRAME,IMG,INS,KBD,LABEL,LEGEND,LI,LINK,LISTING,MAP,MARQUEE,MENU,META,nextID,NOBR,OBJECT,OL,P,PLAINTEXT,PRE,Q,RT,RUBY,S,SAMP,SCRIPT,SMALL,SPAN,STRIKE,STRONG,SUB,SUP,TABLE,TBODY,TD,TEXTAREA,TFOOT,TH,THEAD,TITLE,TR,TT,U,UL,VAR,XMP".split(/[,]/);
    }
     
    if (navigator.appName == "Microsoft Internet Explorer") {
      // init
     Init_IE_getElementsByName();
      // redef de la méthode :
      document.getElementsByName = function(str) {
       o=rechercheParNom(str);
        if (o) { 
          return new Array(o); 
        } 
        return undefined; 
      } 
    } 
     
     
    // FIN getElementsByName==========
    Génial Auteur !

    En ne priant pas pas pour pas qu'il fonctionne pas sous IE5

  9. #29
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Je teste tous mes script avec IE5 (vieux matos oblige) et Firefox :
    ce script fonctionne donc avec IE5 (na !)


    [edit]
    Donc tu n'es donc pas obligé de détecter le navigateur sur lequel tu te trouves
    [/edit]

  10. #30
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut
    Excellent !

    encore merci à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. gestion des évènements sur objets dynamiques
    Par boss_gama dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2009, 11h50
  2. Réponses: 7
    Dernier message: 07/03/2008, 10h01
  3. Utiliser une CssClass sur objet dynamique
    Par starkson dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/07/2007, 09h54
  4. Evenement sur objet dynamique
    Par CanardJM dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 19/11/2004, 13h56

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