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 et setAttribute de DOM


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut IE et setAttribute de DOM
    Bonjour,
    Voici ci-dessous une partie d'une fonction javascript d'un site dynamique fonctionnant sous firefox.

    Une chaine est transmise à la fonction, chaque ligne de la chaine se termine par \n et chaque ligne est composée de 4 strings séparées par des ; (fichier csv).
    Je veut créer un select avec comme options les premiers éléments de chaque ligne. Ça, c'est bon.

    Je veut déclencher une fonction afficher_select(a,b) au passage de la souris sur les options du select (afficher une photo et un commentaire d'aide) et en déclencher une autre (mem_select(a,b)) quand on clique sur une des options.

    Je peux appeler cette fonction avec plus de 15 fichiers csv, chaque fichier peut comporter plusieurs centaines de lignes, il est donc impératif d'automatiser tout cela.

    Pas de pb avec firefox. Avec ie8, la liste de sélection est bien créé, mais il ne se passe rien au passage de la souris ou au click. J'ai essayé la partie en commentaire (setAttribute.onmouseove...), mais au premier passage de la boucle for, on exécute la fonction afficher_select(0,sc), et c'est terminé). Avec opera10, le click fonctionne mais pas onmouseover, mais je n'ai pas vraiment chercher avec opera.

    Que de temps perdu avec ces navigateurs ne respectant rien !

    Merci de votre aide

    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
     
      if(val!="flo") ligne.sort();
      l=document.getElementById("liste_selection");
      if(l.childNodes.length>0){  
        l.removeChild(l.lastChild);
        document.getElementById("liste_selection").innerHTML="";
       }    
      sel=document.createElement("select");
      alert("nb lignes= "+ligne.length)
      for(i=0;i<ligne.length;i++){
        cara=ligne[i].split(';')
        cara1[i]=cara[0]
        cara2[i]=cara[1]
        cara3[i]=cara[2]
        cara4[i]=cara[3]
        var k = document.createElement('option');
        k.setAttribute("value", i);    
    //    if(document.all){
     //     essai pour ie
    //      k.setAttribute.onmouseover=afficher_select(i,sc);
    //      k.setAttribute.onclick={mem_select(i,sc);
    //    }else{
    //      pour firefox qui fonctionne
          eval("k.setAttribute('onMouseOver','afficher_select(\""+i+"\",\""+sc+"\")')");    
          eval("k.setAttribute('onClick','mem_select(\""+i+"\",\""+sc+"\")')");
    //    }           
        t=document.createTextNode(cara1[i])
        k.appendChild(t);
        sel.appendChild(k);       
      }
      l.appendChild(sel);

  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
    les options ne supportent pas le mouseover

    il existe des selects emulés à base de li et ul et du coup le li accèpte le onmouseover
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    Oui, bien sur, mais bonjour la présentation pour une liste de plus de 100 éléments.
    J'ai bien tenté de mettre l'attribut sur le nœud texte, mais je pense que ce type de nœud ne peut recevoir ce genre d'attribut.

  4. #4
    Invité
    Invité(e)
    Par défaut
    jour

    tout a fait ie ne supporte apparement pas setAttribute pour l'ajout d'evenement

    il faudrait passer par un attachEvent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k.attachEvent('onmouseover',function(){lafonction(les parametres)});

  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
    attachevent ne changera pas grand chose l'option ne supporte pas l'évènement onmouseover sous ie

    Pour ce qui est de la presentation avec des ul et des lis ?
    Bn ce sera invisible pour le user, il aura l'impression d'avoir affaire à un select normal ...
    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
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par mekal Voir le message
    jour

    tout a fait ie ne supporte apparement pas setAttribute pour l'ajout d'evenement

    il faudrait passer par un attachEvent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k.attachEvent('onmouseover',function(){lafonction(les parametres)});
    IE supporte très bien le setAttribute pour l'ajout d'événements.
    Je l'exploite depuis un moment maintenant...
    le attachEvent fera aussi l'affaire, mais comme cela a été dit, le faire sur une <option> n'a pas d'intérêt.
    Dernière modification par jnore ; 13/10/2009 à 06h51. Motif: faute de grammaire

  7. #7
    Invité
    Invité(e)
    Par défaut
    j'ai refait des testes au sujet de attachevent et les evenement et il est vrais que sa marche avec ie 8 mais apparement pas sur ie 6 c'est pour cela que j'ai du abandonne cette solution pour ie.

Discussions similaires

  1. [DOM] Erreur avec la méthode setAttribute
    Par PierreBTSIG dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 19/05/2008, 13h45
  2. [DOM] [Info] className = . . .; vs setAttribute ('class', . . .); sous IE
    Par Hibou57 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 02/08/2007, 11h16
  3. [DOM] [entité html] setAttribute
    Par Fabouney dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/05/2007, 09h21
  4. [DOM] dom, style, setattributes ?
    Par LeCaméléon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 12h35
  5. [DOM] DOM, setAttribut, évènements et IE...
    Par Cyrano dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 15/04/2006, 12h58

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