Bonjour à tous. J'ai un petit souci avec IE qui, comme d'hab', a implémenté son propre comportement sur les actions DOM.
Exemple : je cherche à insérer des noeuds cases à cocher, éventuellement cochées, dans un bloc.
Les commentaires dans le code situent le problème. Si un élément n'est pas encore inséré dans l'arbre DOM du document, IE n'affichera pas les modifications que l'on fait subir à ses attributs. Pour voir l'effet d'un règlage dynamique d'un attribut, il faut donc avoir inséré l'élément au prélable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 var f = document.getElementById( "f" ); b = document.createElement( "input" ); b.setAttribute( "type", "checkbox" ); b.checked = true; // A --> si on le fait avant le appendChild, ça ne marche pas sur IE f.appendChild( b ); f.appendChild( document.createTextNode( "Blablabla" ) ); b.checked = true; // B --> si on le fait après le appendChild, ça marche aussi sur IE !!
Pour cet exemple, ce n'est pas bien gênant. Cependant, dans d'autres cas, ça simplifierait nettement mon code de pouvoir faire les choses dans un ordre ou dans l'autre, ainsi que m'y autorisent Opera ou Firefox.
Deux questions par conséquent :
1 - qui a raison du point de vue de la norme ?
2 - existe-t-il un moyen (une fonction javascript) pour forcer IE à mettre à jour son affichage [[[ ici : à montrer la case cochée même si on n'a pas fait le deuxième
Code : Sélectionner tout - Visualiser dans une fenêtre à part b.checked = true; // B --> si on le fait après le appendChild, ça marche aussi sur IE !!
Partager