11548 sujets

JavaScript, DOM et API Web HTML5

Modérateur
Salut,

Je cherche à récupérer l'url et l'intitulé des liens d'une liste comme celle-ci:
<div id="menu">
	<h2>Titre</h2>
	<ul>
		<li><a href="lien1.htm">lien1</a></li>
		<li><a href="lien2.htm">lien2</a></li>
		<li><a href="lien3.htm">lien3</a></li>
		<li><a href="lien4.htm">lien4</a></li>
		<li><a href="lien5.htm">lien5</a></li>
	</ul>
</div>

Pour l'url, je n'ai pas de problème, mais, en dépit de tous mes efforts, il n'en va pas de même concernant l'intitulé. Quelqu'un pourrait-il me donner un petit coup de pouce? Voici mon code actuel:
var d = document;
var OB = new Object();

OB =
{
	Chargement: function()
	{
		OB.Test.TabLiens();
	}
}
window.onload = OB.Chargement;

OB.Test =
{
	TabLiens: function()
	{
		var adr = d.getElementById( 'menu' ).getElementsByTagName( 'a' );
		var text = adr[0].firstChild.data;
		var tab = [];
		tab[ adr] = text;

		for( var v = 0 ; v < adr.length ; v++ )
			alert( tab[ adr] + ' -> ' + adr[v] );
	}
}

Merci d'avance. Smiley smile

EDIT: Lorsqu'on définit un tableau puis qu'on le déclare en tant que tableau associatif, celà ne passe pas sur le forum... d'où l'espace supplémentaire dans le tableau "tab"... Smiley ohwell Serait-il possible d'indiquer ceci en dehors du "i" pour l'italique? Smiley confuse
Modifié par koala64 (14 Feb 2006 - 13:43)
Modérateur
La même chose qu'avec data... Smiley murf Les urls défilent au cours des alertes mais les intitulés restent bloqués sur "lien1"... Smiley rolleyes
Modérateur
ah! voilà! Smiley cligne Effectivement la piste du innerHTML était la bonne... çà donne ceci:
var d = document;
var OB = new Object();

OB =
{
	Chargement: function()
	{
		OB.Test.TabLiens();
	}
}
window.onload = OB.Chargement;

OB.Test =
{
	TabLiens: function()
	{
		var url = d.getElementById( 'menu' ).getElementsByTagName( 'a' );

		for( var v = 0 ; v < url.length ; v++ )
			alert( url[v].innerHTML + ' -> ' + url[v] );
	}
}
J'avais tenté en passant par textNode mais j'obtenais systématiquement une valeur indéfinie.

Merci à tous les deux en tout cas. Smiley cligne
Bonjour,
Ton erreur était
var text = adr[0].firstChild.data;

qui se réfère toujours à la description du premier lien.

Sous DOM tu pouvais mettre ceci :

	TabLiens: function()
	{
		var url = d.getElementById( 'menu' ).getElementsByTagName( 'a' );

		for( var v = 0 ; v < url.length ; v++ )
			alert( url[v].firstChild.data + ' -> ' + url[v] );

	}
Coala64 > fais juste gaffe avec innerHTML au cas où tu incluerais de l'HTML dans tes liens. C'est pour ça que je parlais d'innerText <troll> voilà un des rares trucs que m$ invente de bien </troll>
Modérateur
ok. En fait, je viens de tester la solution de chmel et je pense opter pour celle-ci... Merci d'ailleurs pour cette précision concernant le DOM, je ne savais pas...

Et puis dans mon emportement, j'avais mal lu en effet... J'étais parti sur innerHTML au lieu d'innerText...

Tiens, sinon, tu as oublié deux balises dans ton message Smiley cligne :
a écrit :
<troll>Coala64</troll> fais juste gaffe avec innerHTML au cas où tu incluerais de l'HTML dans tes liens. C'est pour ça que je parlais d'innerText <troll> voilà un des rares trucs que m$ invente de bien </troll>
Soyons attentifs que diable! Smiley lol
Modifié par koala64 (14 Feb 2006 - 19:48)
Modérateur
oui, je peux être très vilain quand je m'y mets, QuentinK...

( Tu me piques mon "k", je te pique ton "c" Smiley trout )