11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Me voici a poster mon premier message ... et oui on y arrive finalement .

donc mon souci (vous vous disiez bien que je passais pas pour payer mon coup )

J'ai une fonction qui doit donner la propiété 'display:none' a tout un groupe de calques ayant le meme 'name' . jusque la tout va bien, j'affiche ensuie le calque ayant l'ID souhaité .
le but est de faire apparaitre un seul block en fonction du lien cliquer (une simili-frame)
alors ca marche parfaitement sous fire fox, mais IE ne remet pas en 'none' le block precedemment visible .

En esperant m'etre fait comprendre, coici le java script :


function HideMesCalcName(blocksName,ident) {
 	var blocksListe=document.getElementsByName(blocksName);
	for (var n=0;n<blocksListe.length;n++){
		blocksListe[n].style.display='none';

	}
	document.getElementById(ident).style.display='block';
}

Modifié par spirale (20 Jun 2006 - 16:41)
spirale a écrit :
Bonjour,
Me voici a poster mon premier message ... et oui on y arrive finalement .

donc mon souci (vous vous disiez bien que je passait pas pour payer mon coup )

J'ai une fonction qui doit donner la propiété 'display:none' a tout un groupe de calques ayant le meme 'name' . jusque la tout va bien, j'affiche ensuie le calque ayant l'ID souhaité .
le but est de faire apparaitre un seul block en fonction du lien cliquer (une simili-frame)
alors ca marche parfaitement sous fire fox, mais IE ne remet pas en 'none' le block precedemment visible .

En esperant m'etre fait comprendre, coici le java script :


function HideMesCalcName(blocksName,ident) {
 	var blocksListe=document.getElementsByName(blocksName);
	for (var n=0;n<blocksListe.length;n++){
		blocksListe[n].style.display='none';

	}
	document.getElementById(ident).style.display='block';
}


oups .... mauvaise manip ... dsl Smiley saoul
Modifié par spirale (08 Jun 2006 - 16:34)
ha ok , ca calme ....
Donc en passant par la classe je réussirait peut etre a faire ce que je veux .
Aller, j'y retrourne, merci pour la réactivité ,;)
je reposterai le code dés que ca sera ok Smiley smile

edit :
la classe d'Olivier (sur ce meme site ) """document.getElementsByClassName""" devrait pouvoir m'aider ...
Modifié par spirale (08 Jun 2006 - 17:19)
Cela risque de consommer pas mal de ressource, mais si tes calques utilisent tous la même balise , tu faire ceci :
function HideMesCalcName(blocksName,ident) {
 	var blocksListe=document.getElementsByTagName('DIV');
	for (var n=0;n<blocksListe.length;n++)
             {
                 if(blocksListe[n].className==blocksName)
		blocksListe[n].style.display='none';
	}
	document.getElementById(ident).style.display='block';

}
Je ne suis pas sur que ça marcheras plus sur IE
Modifié par chmel (09 Jun 2006 - 10:22)
POurquoi faire simple lorsque l'on peut faire compliquer (merci microsoft, de nous faire evoluer si vite dans le hack)

voici donc le code qui semble fonctionner sous IE, avec la partie qui marchait deja pour les autres navigateurs :

function HideMesCalcName(blocksName, ident) {
    var blocksListe = Array();
   
    if (navigator.appName.indexOf("Explorer") > -1) {
        // IE Code
        blocksListe = document.getElementsByTagName('div');
        for (var n = 0; n< blocksListe.length; n++)
            if (blocksListe[n].name == blocksName) {
                blocksListe[n].style.display='none';
                if (blocksListe[n].id == ident)
                    blocksListe[n].style.display='block';
        }
    } else {
        //FFCode
        blocksListe=document.getElementsByName(blocksName);
        for (var n=0; n<blocksListe.length; n++){
            blocksListe[n].style.display = 'none';
            if (blocksListe[n].id == ident)
                blocksListe[n].style.display = 'block';
        }
    }
}

Modifié par spirale (20 Jun 2006 - 16:43)