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 :

pb avec setAttribute sous IE


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut pb avec setAttribute sous IE
    Bonjour,

    Je sais qu'il existe une différence entre IE et FFX pour affecter une valeur à un nouvel attribut d'un objet.
    Pour IE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.onChange = function() { mon_javascript };
    Pour FFX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.setAttribute("onChange", "mon_javascript");
    Voilà le code de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	  sel = document.createElement('select');
    	  sel.setAttribute("id", "critere"+i);
    	  sel.setAttribute("onChange", "show("+i+")");
              sel.onChange = function() { show(i); };
    	  sel.setAttribute("size", "1");
    show(i) étant une fct définie un peu plus haut.
    Lorsque je regarde le code à l'intérieur de mon select (innerHTML) :
    - Sous Firefox, je vois bien l'attribut onChange. ça marche nickel
    - Sous IE, je ne vois pas l'attribut onChange !! (donc je peux pas lancer mon code javascript en changeant la valeur de mon select)

    Savez vous d'ou peut venir ce mystérieux pb ?

    Merci !![/code]

  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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sel.setAttribute("onChange", function(){show(i)});
    :

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Tu veux mettre ce code pour FFX ?
    ça marche déjà très bien sous FFX avec mon code.

    Le pb est sur IE, donc sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sel.onChange = function() { show(i); };
    IE est censé comprendre cette ligne mais il en est rien....

  4. #4
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    onchange ? au lieu de onChange ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par SpaceFrog
    onchange ? au lieu de onChange ?
    Nickel !!!
    J'étais sur qu'il y avait une majuscule pourtant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Bon allez comme tu as l'air de bien maitriser, je te propose un autre petit pb.
    Exactement la même chose
    ça marche très bien sous FFX mais pas sous IE (comme d'hab)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
              clos = document.createElement('a');
              clos.setAttribute("href", "#");
              clos.setAttribute("onclick", "javascript:document.getElementById('all').removeChild(document.getElementById('sac"+id+"'))");
              clos.onclick = function () { document.getElementById('all').removeChild(document.getElementById('sac"+id+"')); }
              texte = document.createTextNode('Supprimer');
              clos.appendChild(texte);
    L'attribut onclick n'apparait pas sous IE, sous FFX pas de pb.
    Tu remarques que j'ai mis onclick et pas onClick :-)

  7. #7
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    a priori et comme je le dis souvent, onclick n'attend pas une recette de crèpes suzette donc javascript: est inutile !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clos = document.createElement('a');
              clos.setAttribute("href", "#");
              clos.setAttribute("onclick", "document.getElementById('all').removeChild(document.getElementById('sac"+id+"'))");
              clos.onclick = function () { document.getElementById('all').removeChild(document.getElementById('sac"+id+"')); }
              texte = document.createTextNode('Supprimer');
              clos.appendChild(texte);

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Oui je suis d'accord avec toi pour le "javascript:"
    Mais évidemment cela ne corrige pas mon pb. As tu une solution ?
    Je rappelle que la ligne qui ne focntionne pas est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clos.onclick = function () { document.getElementById('all').removeChild(document.getElementById('sac'+id)); };
    Est ce le fait de mettre directement du code javascript, et pas un appel de fct comme tout à l'h, qui fait que cela ne fonctionne pas ? Perso, je ne pense pas mais c'est la seule différence que je note par rapport à l'autre pb.

    Merci!

  9. #9
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ce ne serait pas all qui interfère avec le mot reservé .all du langage javascript ???

  10. #10
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    si tu essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clos.onclick = function () { alert('sac'+id)};
    déja id est encore une fois mal choisi comme nom de variable ... confusion possible avec .id ...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Non en changeant le nom des variables ça ne marche pas mieux...

  12. #12
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    et le test alert donne quoi ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    En fait ma balise de lien ne possède même pas l'attribut onclick...
    Donc qd je clique desus rien ne se passe puisque le code html obtenu (que j'ai vérifié en faisant un alert du innerHTML) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#">Supprimer</a>
    Tu vois que l'attribut href a été ajouté sans problème (c'est la même ligne de code pour FFX et IE)
    Par contre pour ajouter un attribut évenementiel, c'est une autre histoire. Il faut les deux lignes de code que j'ai mis plus haut.
    Pour FFX pas de pb ça marche
    Mais pour IE, pas du tout!!

  14. #14
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    tu l'append ou clos ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    ??

    je ne sais pas ce que ça veut dire.
    clos serait un mot réservé ?
    Dans mon cas, c'est le nom que j'ai donné à mon élément.

  16. #16
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    non je veux dire tu fais var clos=document.createElement ....

    mais je ne vois nulle part

    document.body.appendChild(clos) ...

    faut bien que tu l'ajoute dans le flux de la page ...

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Non ce n'est pas ça le problème puisque je fais le appendChild juste à la ligne qui suit.
    Je l'append à un div, qui lui est rattaché au body.
    De toute manière ça se passe bien à ce niveau puisque l'objet est bien créé. Ce qui manque c'est l'attribut onclick, seulement ça!
    J'ai fait des recherches et la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Les événements
     
    L'ajout d'événements, comme onclick ou onmouseover par exemple, posera également problème sous ie.
     
    Sous firefox, il suffit d'indiquer : mon_element.setAttribute("onclick","code javascript");Internet explorer n'affichera pas d'erreur de code mais ne l'interprètera pas non plus.
    Pour pouvoir affecter un événement sous ie, il faudra alors passer par la notation : mon_element.onclick = nomdefonction; ou alors : mon_element.onclick = function() { code javascript }
     
    Tous les autres attibuts tels que id, align, lang, etc ne posent quant à eux aucun problème et s'utilisent de la même manière selon les différents navigateurs.
     
    tiré de http://www.nanoum.net/blog/9_setAttribute.html
    Je vous rappelle que mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    clos = document.createElement('a');
    clos.setAttribute("href", "#");
    clos.setAttribute("onclick", "document.getElementById('all').removeChild(document.getElementById('sac"+id+"'))");
    clos.onclick = function () { document.getElementById('all').removeChild(document.getElementById('sac"+id+"')); }
    texte = document.createTextNode('Supprimer');
    clos.appendChild(texte);
    document.getElementById('sac'+ident).appendChild(clos);
    Je fais donc exactement ce qui est proposé, et pourtant ça ne fct pas...

    D'où peut venir le pb ?

    Merci

  18. #18
    Membre actif

    Inscrit en
    Juin 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2003
    Messages : 229
    Points : 223
    Points
    223
    Par défaut
    J'ai eu exactement le même problème que toi avec l'evenement onclick. Mon évènement se déclenchait bien sur Firefox / Mozilla / Safari etc... mais sous IE, pas la moindre chose (même pas un alert('toto') ), alors que tout les autres evenements comme onmousedown, onmouseover etc... fonctionnait très bien même sur IE.

    J'ai fini par me dire que l'évènement onclick n'était pas implémenté par l'interpréteur JS de IE, et que donc, fallait faire autrement. Du coup, j'ai remplacé le onclick par onmouseup (c'est pas tout a fait pareil, mais dans la plupart des cas, c'est OK), et depuis ça marche.

  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    as tu essayé un truc omme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function mafonction(){
        document.getElementById('all').removeChild(document.getElementById('sac"+id+"'));
    }
    ....
     
    clos.setAttribute("onclick", mafonction);
    clos.onclick = mafonction;
    bon par contre il faut que id soit déclaré de manière globale à la page

  20. #20
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    il doit te manquer aussi ça :

Discussions similaires

  1. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54
  2. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29
  3. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19
  4. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02
  5. Utiliser Borland C++ avec Emacs sous Windows
    Par Eikichi dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/03/2003, 08h40

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