[javascript] un DIV problématique

Voilà, je ne sais pas pourquoi, mais en essayant de récupérer toutes les div de ma webpage, je n’obtiens pas ceux qui m’interessent.
Or avec getElementByTagName(“DIV”), je suis censé avoir toutes les div de la page, nan ?

[code]var _windows = new Array();
_windows = document.getElementsByTagName(‘DIV’);

if(_windows[i].className == ‘timeline’)
{
alert(_windows[i].id + ’ ’ + _windows[i].className + ’ cpt : ’ + i);
}[/code]

dans ma webPage j’ai ça :

<div class="timeline" id="window7" title="Salle_6" > <div class="floatingWindowContent"> VIP FR 01 </div> </div>

J’ai jamais fait de javascript, mais a vu de nez j’ai 2 remarques d’après java:

  1. tu fais pas de boucle pour ton i du genre
    for (int i =0; i<_windows.length; i++){
    blabla;
    }
  2. en java tu compares pas des strings en faisannt '=='
    mais monString.equals(‘blabla’);

'oila

[quote=“Dadal, post:2, topic: 30095”]J’ai jamais fait de javascript, mais a vu de nez j’ai 2 remarques d’après java:

  1. tu fais pas de boucle pour ton i du genre
    for (int i =0; i<_windows.length; i++){
    blabla;
    }
  2. en java tu compares pas des strings en faisannt '=='
    mais monString.equals(‘blabla’);

'oila[/quote]

  1. Clairement, le problème est là !
  2. En javascript c’est ==, pas equals.

[quote=“Monsieur_Max, post:3, topic: 30095”]1) Clairement, le problème est là !
2) En javascript c’est ==, pas equals.[/quote]

Oui, j’ai oublié de mettre la boucle for dans le code ci dessus, mais c’est pas le problème. J’ai bien ma boucle for, mais je n’ai absoluement pas les class qui m’interesse dans mon array. J’ai bien mes 350 divs de la webpage (oui ca fait beaucoup, mais je génère une tableau de div via du Javascript) SAUF ceux qui ont pour class “timeline” B) et là je ne comprend pas.

Et en virant les autres attributs? Du genre:

<div class="timeline"> <div class="floatingWindowContent"> VIP FR 01 </div> </div>

Et en changeant le mot timeline par autre chose (mot protégé tousa), ou en virant l’espace en trop à la fin de ton

Enfin bref, en passant en revue toute les chapitres du bouquin “Les fautes con du petit programmeur illustré” tu devrais bien tomber dessus. B)

_windows[i].className tout seul ça ne marchera pas je pense. Tu dois faire _windows[i].getAttribute(“className”) pour IE et_windows[i].getAttribute(“class”) pour les autres.

Sinon le mieux est encore d’utiliser une fonction getElementsByClassName toute faite.

[quote=« cedric, post:6, topic: 30095 »]_windows[i].className tout seul ça ne marchera pas je pense. Tu dois faire _windows[i].getAttribute(« className ») pour IE et_windows[i].getAttribute(« class ») pour les autres.

Sinon le mieux est encore d’utiliser une fonction getElementsByClassName toute faite.[/quote]

le className fonctionne bien si je lui fait une condition avec une autre class autre que le timeline. A propos du getElementByClassName, j’en avais utilisé 3 ou 4 version différentes, et aucune ne me retournaient un résultat. La valeur de retour, ou plutot le array de retour était à null :confused: Du coup, j’ai du abandonné la fonction getElementByClassName (chose que j’aurai préféré avoir avec la norme DOM 1 ou DOM 2). Et c’est bien dommage, c’est l’une des fonctions les plus utiles. Je metterais le code de ce getElementByClassName une fois au taff.

[quote=« Dadal, post:5, topic: 30095 »]Et en virant les autres attributs? Du genre:

<div class="timeline"> <div class="floatingWindowContent"> VIP FR 01 </div> </div>

Et en changeant le mot timeline par autre chose (mot protégé tousa), ou en virant l’espace en trop à la fin de ton

		<div class="timeline" id="window7" title="Salle_6" >

Enfin bref, en passant en revue toute les chapitres du bouquin « Les fautes con du petit programmeur illustré » tu devrais bien tomber dessus. B)[/quote]

En fait, je ne peux me permettre de virer les attributs. Ils me servent de stockage de donnée et non pas pour l’effet de style. Néanmoins, je vais tester de virer les espaces inutiles à l’intérieur des balises. Ca peut probablement venir de là.

Bon, apparemment, y a un conflit entre les id de mes div et mes appels de fonctions paramétrées javascript.
Si en paramètre, je file un nom d’id différent de la div voulu, je n’ai aucun problème pour lire la class timeline.
Mais dès que le paramètre est exactement identique, ca bug. :confused:

Voilà le code de la webpage, comme vous le voyez, je définis plusieurs div pour chaque timeline. Puis ensuite, j’appelle une fonction javascript afin qu’il me génère une timeline graphique sur un tableau en prenant compte divers paramètres.

Je me demande, s’il n’y aurait pas d’autres attributs utiles qui pourraient me servir comme sauvegarde de donnée temporaire. Un truc qui joue le même role qu’une class qui ne se limite pas seulement à un nom unique. Dans mon cas, je peux avoir plusieurs redondance d’une même donnée.

Edit : Bon, finalement, c’était un problème tout con. Ma fonction modifiait l’id et la class, donc forcément, il m’était impossible de retrouver ces div là. B)

[code]



FR 01

	<div class="timeline" id="window2" title="Zone_4">
		<div class="floatingWindowContent" title="FR 02">
		FR 02
		</div>
	</div>

	<div class="timeline" id="window3" title="Salle_3">
		<div class="floatingWindowContent" title="ITA 01">
		ITA 01
		</div>
	</div>
	
	<div class="timeline" id="window4" title="Salle_5">
		<div class="floatingWindowContent" title="VIP JAP 01">
		VIP JAP 01
		</div>
	</div>
[/code]