11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

La ligne 29 de ce code (que l'on peut voir ici) renvoie une erreur d'objet indéfini : var objAgir = document.getElementsByTagName('dt').getElementById(textAgir);.

Et le code complet :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
	<head>
		<title>Test</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

		<script language="javascript">
		<!--
		function affiche()
		{
		var oBJ = document.getElementsByTagName('dd');
		noBJ = oBJ.length;
		for(l=0; l < noBJ; l++)
			{
			oBJ[l].onmouseover = function()
				{
				faire('block',this);				
				}
			}
		}
		
		function faire(text,obj)
		{
		var numero = obj.getAttribute('name');
		var tNumero = numero.split('_');
		var textAgir = 'dt_' + tNumero[1];
		var objAgir = document.getElementsByTagName('dt').getElementById(textAgir);
		objAgir.style.display = text;
		objDiv = document.getElementsByTagName('textarea');
		objDiv[0].value = text_agir;
		}
		-->
		</script>

		<style type="text/css">
		dl#menu {
		border:1px solid gray;
		width:200px;
		}
		
		dl#menu dt {
		display:none;
		}
		</style>

</head>

<body>

	<dl id="menu">

		<dd name="dd_1">Dédé 1</dd>
		<dt name="dt_1">Dété 1</dt>
		
		<dd name="dd_2">Dédé 2</dd>
		<dt name="dt_2">Dété 2</dt>
		
		<dd name="dd_3">Dédé 3</dd>
		<dt name="dt_3">Dété 3</dt>
		
		<dd name="dd_4">Dédé 4</dd>
		<dt name="dt_4">Dété 4</dt>

	</dl>

	<input name="Bouton" type="button" onClick="affiche()" value="Appuyer">
	
	<br>

	<TEXTAREA>Résultat</TEXTAREA>

</body>

</html>


Si vous avez quelques indications, ce serait avec plaisir.

GS.
Modifié le 06 Dec 2004 - 14:15
Et si tu remplaçais cela :
document.getElementsByTagName('dt').getElementById(textAgir);

par cela :
document.getElementById(textAgir);


...Car je ne vois pas de tag ayant le nom de "dt", par contre d'après ce que je vois, tu as des id avec des nombres différents, et c'est justement ceux-ci que tu récupères avec le code plus haut...
Mince ! Rien résolu du tout : cf. le post suivant de El Moustiko.

Bon. C'est réglé.

[i]getElementById[/i] renvoie un tableau. Et non directement un objet. Dans mon code, il fallait donc ajouter un [i]objAgir[0][/i] au lieu du seul [i]objAgir [/i]pour modifier les propriétés CSS.

Résolu, donc.


Le pire, c'est que je n'arrive pas à recréer le code qui ne marchait_pas/marchait.

Bon, je laisse tomber pour le moment : je suis passer à un autre problème avec le Target.
Modifié le 06 Dec 2004 - 17:24
Euh nan... getElementById renvoi un objet directement.

Et ton code premier était sûrement faux en plus, parceque getElementsByTagName renvoi un tableau (lui) et donc pour récupérer l'id il aurait fallur parcourir le tableau et non .getElementById direct qui n'aurai rien voulu dire.

Le code getElementById seul suffit, un ID etant unique...

C'est bizar ce que tu raconte là, ce que tu décris et tout le contraire du comportement normal Smiley sweatdrop
Salut,

Merci de ta réponse. J'ai du m'embroyer entre le TagName et le Id. Peut importe. J'ai résolu mon problème. Maintenant je me bats avec le Target et autres addEventListener et relatedtarget.