11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je fait un p'tit composant dans un dev pro qui doit afficher une div quand on click sur un "a href." Aucun probleme avec ca.

Dans un souci d'accessibilité, j'essaye de rendre invisible cette div en javascript au chargement de la page et non pas avec un display:none direct.

Le code que j'ai pondu marche sur firefox mais pas sous IE, ce qui est assez étrange 8O


function checkHide(){
	var tab = new Array();
	tab = document.getElementsByName('hide');
	alert('checkHide '+tab.length);
	for(i=0;i<tab.length;i++)
	tab[i].style.display='none';
	
	}
	window.onLoad = checkHide;


C'est bien comme ca qu'il faut l'utiliser la fonction getElementsByName ?[/i]
Bonjour,

Je crois qu'il y a confusion :

document.getElementsByName n'existe pas sauf si c'est une fonction que tu as implémentée.
C'est plutôt "document.getElementsByTagName" qui va te retourner un tableau d'éléments dont le tag (p,div,ul etc...) est passé en paramètre

Tu as passé 'hide' en parametre, si ceci correspond à l'id de ton élmént que tu veux cacher, il faut utiliser document.getElementById qui va te retourner une reference à cet élément et dans ce cas ton devient:


var d = document.getElementsByName('hide');
d.style.display='none';


c'est étonnant que cela marche sur FF .. Smiley smile
en effet désolé Smiley lol j'utilise jamais le name ...

si non je pense que l'erreur dans ton code c'est là
tab.style.display='none';


essaie plutot
tab[ i ].style.display='none';

Modifié par dunjl (25 Jul 2006 - 12:24)
c'est une erreur de copier/coller

en fait le probleme majeur est que mon tableau est vide sous IE
il me prend sort un '0' dans le alert sous ie et '1' sous ff
a écrit :
c'est une erreur de copier/coller


oui c'est à cause le l'italique de la mise en forme du forum ...
j'ai été obligé de rajouter des espaces !!

en cherchant un peu, il semble que IE gere cette fonction différemment de Moz

http://jszen.blogspot.com/2004/07/whats-in-name.html

si tu as la possibilité, il vaut mieux utiliser un id qu'un name , pour un div.
Smiley decu Non je peux pas pas. il y en a un nombre indéterminé dans la page
Modifié par Roger (25 Jul 2006 - 13:10)
Bonjour,

Je présume que lorsque tu utilises "hide" il s'agit du nom de class de tes éléments div.

Dans ce cas, je te suggérerais plutôt d'utiliser ceci :


function checkHide() {
	var tab = new Array();
	tab = document.getElementsByTagName("div");

	for(i=0;i<tab.length;i++) {
		if (tab[ i ].className == 'hide')
			tab[ i ].style.display = 'none';
	}
}

Tu cherches tous les éléments div de ta page, si un div possède "hide" comme nom de classe alors tu le masques (Je n'ai jamais utilisé getElementsByName non plus).
Modifié par Sebastien D. (25 Jul 2006 - 13:49)