DOM - Liens inactifs sous IE [Résolu]

Signaler
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Hello,

J'ai créé un script pour générer dynamiquement des <tr> dans un tableau. En même temps, un bouton "effacer la ligne" est créé à la volée.

No problemo sous FF et Safari, mais, bien sûr, cela ne fonctionne pas sous IE
: mes liens restent inactifs, rien ne se passe quand je clique (j'ai même tenté de faire simplement un alert('toto') sans succès)

Est-ce que ce problème parle à quelqu'un ? Voici comment je les construits :

...
var remove = document.createElement("a");   
remove.appendChild(document.createTextNode("effacer ligne"));               
remove.setAttribute('href','#');                   
remove.setAttribute('style','text-decoration:none;');
...
remove.setAttribute('onclick','enleverLigne(\'tr'+i+'\')');
td2.appendChild(remove);

et enleverLigne :
...
document.getElementById("...").removeChild(document.getElementById(id));
// j'ai testé aussi alert('pouet'); mais rien ne se passe

J
e répète: aucun problème sous FF ou Safari, tout beigne. IE quant à lui reste figé... :-(

Merci d'avance pour toute aide,
Malik7934

10 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
perso j'évite les setAttibute et autre get...
il y a des différences entre les navigateurs !

remove.onclick=function() { enleverLigne('tr'+i); }
ça le fait, par exemple ( et ça me semble plus simple )

j'enlèverais aussi les autre setAttribute

Cordialement
 
          Bul [mon Site] [M'écrire]         
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
id... comme les autres

ch'tiot exemple :

<script type="text/javascript">

    function enleverLigne(tmp)

    {    alert(tmp.id);    }

    var td2=document.getElementById("d");

    var remove = document.createElement("a"); 

        remove.id="toto";

        remove.href='#';                  

        remove.innerHTML="effacer ligne";

        var i=0;

        remove.onclick=function() { enleverLigne(this); }

        remove.style.textDecoration='none';

    td2.appendChild(remove);

    document.getElementById("toto").style.backgroundColor="red";

</script>

Bul[mon Site][M'écrire]
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello,

Merci pour ces infos, je vais suivre la piste du remove.onclick...
Ceci dit, pourquoi veux-tu virer les setAttribute ?

++
Malik7934







http://www.noisy.ch
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
1° parce qu'il me semble plus simple, plus lisible.... d'écrire
    remove.onclick=function() { enleverLigne('tr'+i); }  que
     remove.setAttribute('onclick','enleverLigne(\'tr'+i+'\')');

2° setAttribute ne fonctionne pas de la même manière avec tous les
    navigateurs. je préfère un machin qui fonctionne toujours, avec tous.

mais bon.. chacun ses goûts et la caravane passe, en fonction
       du navigateur regarde la "syntaxe", et le reste, pour les
      ???Attribute si tu veux utiliser.

Cordialement

          Bul [mon Site] [M'écrire]        
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello,

Ok, mais à ce moment là, sachant que je créé mes éléments avec createElement, je ne vois pas comment y mettre des attributs (id, class, etc) sans setAttribute...







http://www.noisy.ch
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ben... normalement

remove.setAttribute('style','text-decoration:none;'); ==>
remove.style.textDecoration="none";                      par exemple

          Bul [mon Site] [M'écrire]         
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ou alors, tu t'y adresses par l'id une fois appendChild fait
id_en_question.style.textDecoration="none";      

  Bul [mon Site] [M'écrire]         
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Ok pour les styles, c'est clair, mais le souci que j'ai à ce moment là c'est pour les id... et j'ai comme l'impression qu'il n'y a pas d'autres solutions que setAttribute

PS : merci pour le remove.onclick, ca tourne !
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
oki doki, merci !









http://www.noisy.ch
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ch'tiote remarque aussi en passant !

sur un href je préfère très nettement
[javascript:void(fonciton()); lien] à
[# lien]
pourquoi ajouter un évênement onclick alors que le href est là pour ça....
mais là aussi, chacun fait comme il sent ( quoique ? )

          Bul [mon Site] [M'écrire]