11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à vous toutes et tous,

voilà une étrangeté que je vois apparaître lors de la création dynamique d'une image SVG via du JavaScript :


tabRect = document.getElementsByTagName('rect');
alert(tabRect.length); // pas de problème, ici !
for (it=0; it<tabRect.length; it++) alert(tabRect[it]); // Bug avec IE !!


Donc voilà : Firefox m'annonce fièrement [object SVGRectElement] tandis qu'Internet Explorer, tout penaud, m'indique "undefined"...

Le pire dans l'histoire, c'est qu'IE définit bien tabRect comme étant un tableau de X éléments, mais ne définit pas ces éléments !!

Une idée d'où ça peut venir, et surtout de comment je pourrais faire pour ainsi naviguer dans les éléments de mon SVG ?

Merci à vous,

Askalab
Modifié par Askalab (06 Jun 2006 - 16:56)
J'ai eu de nombreux problèmes avec IE et la méthode getElementsByTagName(). Celle-ci est censée renvoyer une NodeList, qui émule le comportement d'un tableau en lecture seule en plus de sa propre API. On devrait donc pouvoir accéder aux éléments en lecture par indice. Avec IE, ça marche... parfois Smiley confus

A titre de correctif, j'utilise la méthode NodeList.item(n) :

var list = document.getElementsByTagName( "p" );
for ( var i = 0; i < list.length; ++ i ) {
    var node = list.item( i );
    [ ... ]
}


NB : pour être précis, et le point peut avoir de l'importance : Document.getElementsByTagName() renvoie une NodeList qui peut être interprétée comme un tableau en lecture seule