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 :

setAttribute ne marche pas sur IE6


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut setAttribute ne marche pas sur IE6
    Bonjour,

    je vous explique mon problème :
    je débute un peu dans le javascript et je désire créer un <table> dynamique
    j'ai donc un bouton qui execute un script pour ajouter une ligne à ce tableau, dans cette ligne j'ajoute un élément de type input/button avec un attribut onclick="deleterow de la ligne" avec le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var input = document.createElement('input');
    input.type = 'button' ;
    input.value = "X" ;
    input.id = i ;	
    var newAttr = document.createAttribute("onclick");
    var idNum = input.id;
    newAttr.nodeValue = "document.getElementById('params').deleteRow(document.getElementById('lig"+idNum+"').rowIndex)";
    input.setAttributeNode(newAttr);
    (params étant un tableau et mes lignes ont pour id ligx)

    cela marche tres bien sous firefox, mais pas sous IE. Si quelqu'un sait pourquoi et comment contourner ce problème, je suis preneur.

    Un indice peut-etre : quand je fais un alert de newAttr :
    -sous firefox ça affiche [object attr]
    -sous IE ça affiche juste [object]

    Voilà, merci d'avance.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Tu dois faire ca en JavaScript et pas en HTML (les events HTML sont convertis en JScript dès que la page est lue puis IE ne s'en soucie gère)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IHTMLElement2.onclick=function(event) {
      if(!event) { event=window.event; }
      // ...
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.onclick = function(){ /* ton code */ }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    J'ai pris la deuxième solution, ça marche, merci beaucoup.

    Par contre je savais pas que c'était case sensitive le javascript,
    si j'écris onClick au lieu de onclick, ça marche pas... faudra que je fasse attention.

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Lol, c'est écrit deux fois la même chose

    - IHTMLElement2 c'est le nom de classe des objects HTML sur IE
    - input c'est le nom de ta variable, instance de IHTMLElement

    Par contre mon code permet d'utiliser "event" sous IE comme sous FF, tandis que dans l'autre solution, tu dois t'en passer
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par FremyCompany
    Lol, c'est écrit deux fois la même chose
    Héhé oui exact, désolé j'ai lu et testé d'abord la plus courte... vu qu'elle marche, je me suis pas plus penché sur la tienne... (l'humain est faineant par nature)

    Par contre pour l'histoire du event, ça te dérangerait de m'expliquer son utilité ? Je vois pas trop, le coup du window.event non plus ça me dit rien.

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    ça ne sert que si tu utilises les événements dans ta fonctions, sinon tu peux zapper...

    sous IE l'objet event est accessible partout
    sous Netscape-like il faut le passer en paramètre de la fonction

    d'où pour que ce soit crossbrowser on passe un argument X à la fonction :
    - si X n'est pas null, alors il s'agit de l'event Netscape-like passé en argument
    - si X est null, alors on est sous IE et on utilise l'objet event

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

Discussions similaires

  1. Positionnement d'un background qui marche sur FF mais pas sur IE6
    Par webstarfrog dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 17/07/2008, 10h23
  2. [JS + CSS] Onmouseover sur div marche pas sur ie6
    Par NeedYourHelp dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 23/04/2008, 17h49
  3. setattribut qui ne marche pas sur IE7
    Par taka10 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/09/2007, 11h48
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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