DOM - Liens inactifs sous IE

Résolu
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 2 nov. 2008 à 00:22
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 2 nov. 2008 à 11:18
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 08:44
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]         
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 11:12
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]
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 nov. 2008 à 08:53
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 10:22
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]        
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 nov. 2008 à 10:26
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 10:56
ben... normalement

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

          Bul [mon Site] [M'écrire]         
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 10:58
ou alors, tu t'y adresses par l'id une fois appendChild fait
id_en_question.style.textDecoration="none";      

  Bul [mon Site] [M'écrire]         
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 nov. 2008 à 11:01
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 !
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 nov. 2008 à 11:16
oki doki, merci !









http://www.noisy.ch
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 nov. 2008 à 11:18
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]           
0
Rejoignez-nous