nanoum.net, intégration html/xhtml, css, javascript

javascript

derniers articles

archives

syndication rss

setAttributelundi 07 mars 2005

La fonction setAttribute() permet d'affecter un attribut et sa valeur à un élément ou de modifier un attribut existant.

La syntaxe de cette fonction est la suivante :mon_element.setAttribute("attribut","valeur");

Si la fonction est compatible sous internet explorer et les navigateurs gecko, son utilisation diffère cependant lorsque l'on veut manipuler la classe de l'élément ou les événements qui y sont appliqués.



L'attribut class

Sous firefox par exemple, la modification de l'attribut class se fera de la manière suivante :mon_element.setAttribute("class","maclasse");Internet explorer par contre n'interprètera pas ce code, il lui faudra utiliser className à la place de class.

Pour obtenir un code compatible sous les différents navigateurs, il faudra alors indiquer : mon_element.setAttribute("class","maclasse");
mon_element.setAttribute("className","maclasse");
Il n'est pas nécessaire d'ajouter une détection du navigateur, le code non compris par chacun ne générant pas d'erreur.



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.



L'attribut style

La modification de l'attribut style avec setAttribute fonctionnera sous Firefox par exemple mais pas sous Internet Explorer

Pour Internet Explorer, il faut utiliser une syntaxe un peu particulière avec cssText.

Code fonctionnant sous Firefox, utilisation classique de setAttribute : mon_element.setAttribute("style","color:red;width:200px;");Utilisation avec cssText pour Internet Explorer : mon_element.style.setAttribute("cssText","color:red;width:200px;");

Pour que le code spécifique à IE ne soit pas pris en compte par les autres navigateurs, il convient d'ajouter une condition afin de tester le navigateur : if (document.all) { code pour ie }



Commentaires momentanément fermés. Merci de votre compréhension.