11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir
J'essaie d'atteindre les attributs de certaines balises d'une page xhtml par l'intermédiaire des méthodes et propriétés dédiées. Par exemple, j'utilise attributes.length pour trouver le nombre d'attributs. Comme cette propriété est erroné sous IE, j'ai utilisé la fonction

function AttributesLength(nodeId)
{
	var nodes = document.getElementsByTagName(nodeId);
	node = nodes[0];
	var nodeAttributesLength = 0;
  	for(var i = 0; i <node.attributes.length; i++){
	 	if(node.attributes[i].specified) {
	   		nodeAttributesLength++;
   		}
	}
	alert("body a "+nodeAttributesLength+" attributs");
	return nodeAttributesLength;
}

trouvée sur http://nyams.planbweb.com/tutorial-dom-11.html et qui fonctionne très bien.
Je teste sur la balise body suivante
<body style="color:#FF0000; background-color : lime" title="message d'information au lecteur" >
Ma fonction, même sous IE, me trouve 2 attributs mais lorsque je liste leur valeur avec alert(node.attributes.value); l'attribut style n'existe pas (il est remplacé par un attribut par défaut selon les spécifications du DOM http://xmlfr.org/w3c/TR/REC-DOM-Level-1/level-one-core.html

Ma question est alors simple :
comment trouver l'attribut style sous iE ? (pas de problème sous FF)

Merci

[/i]
Modifié par coucou (30 Dec 2006 - 15:33)
Salut,
coucou a écrit :
Ma question est alors simple :
comment trouver l'attribut style sous iE ? (pas de problème sous FF)
Tu peux procéder ainsi avec IE :
alert(node.style.cssText);
Sans garantie (et d'ailleurs, ça ne renvoie pas l'attribut exactement comme il était écrit).
Modifié par Eldebaran (29 Dec 2006 - 11:37)
Merci Eldebaran. Ta proposition me permet d'obtenir color : blue. Toutefois, si j'écris quelque chose comme node.hasAttribute("style") une erreur apparait ("cet objet ne gère pas cette propriété ou cette méthode"). Par contre, plus de problème avec node.getAttributes("style").cssText.

Je vais chercher du côté de hasAttributes() et hasAttribute("style")

Merci