j'avais posté pour un problème similaire que je pensais résoudre en passant par des tableaux associatifs d'où le délestage .

présentation du sujet :
je définie un tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
var tab_gene=new Array;
 tab_gene["candidat"]=new Array; // tableau du candidat
 tab_gene["groupe"]=new Array; // tableau du groupe
 tab_gene["projet"]=new Array; // tableau du projet
 tab_gene["client"]=new Array;// tableau du client
 //
 tab_gene["candidat"]["social"]=new Array; //social du candidat
 tab_gene["candidat"]["social"][0]=0;
 tab_gene["candidat"]["reel"]=new Array;//reel du candidat
 tab_gene["candidat"]["reel"][0]=0;
 tab_gene["candidat"]["pro"]=new Array;//pro du candidat
 tab_gene["candidat"]["pro"][0]=0;
 tab_gene["candidat"]["pro"][1]=0;
 tab_gene["candidat"]["prive"]=new Array;//prive du candidat
 tab_gene["candidat"]["prive"][0]=0;
 tab_gene["candidat"]["prive"][1]=0;
 //
 tab_gene["groupe"]["social"]=new Array; //social du candidat
 tab_gene["groupe"]["social"][0]=0;
 tab_gene["groupe"]["social"][1]=0;
...
 tab_gene["client"]["pro"]=new Array;//pro du candidat
 tab_gene["client"]["pro"][0]=0;
 tab_gene["client"]["pro"][1]=0;
 tab_gene["client"]["prive"]=new Array;//prive du candidat
 tab_gene["client"]["prive"][0]=0;
 tab_gene["client"]["prive"][1]=0;
ce tableau correspond à l'existance de claques dont leur affichage doit être géré dynamiquement.

pour cela, j'ai deux menu.
le premier est :candidat, groupe, projet, client
il sert à sélectionner un ensemble de calques
le second est, comme vous vous en doutez : reel, social , pro et prive

par les menus en sélectionnant donc groupe et pro, on doit afficher uniquement les calques pro du groupe.
vu que IE ne gère pas les Name sur les div, il faut que je passe par Id qui doit être unique (normal), d'où mon tableau.

pour contrôler l'affichage, j'ai 3 fonctions
une pour remettre à l'invisible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function raz_cand(candi,nom_tab){
var ii;
var tab;
 
for (ii=0; ii<candi[nom_tab]["reel"].length; ii++)//reel
			{tab=nom_tab+"_reel_"+[ii];
			document.getElementById(tab).style.visibility='hidden';
			document.getElementById(tab).style.display='none';}
for (ii=0; ii<candi[nom_tab]["social"].length; ii++)//social
			{tab=nom_tab+"_social_"+[ii];
			document.getElementById(tab).style.visibility='hidden';
			document.getElementById(tab).style.display='none';}
for (ii=0; ii<candi[nom_tab]["prive"].length; ii++)//prive
			{tab=nom_tab+"_prive_"+[ii];
			document.getElementById(tab).style.visibility='hidden';
			document.getElementById(tab).style.display='none';}
for (ii=0; ii<candi[nom_tab]["pro"].length; ii++)//pro
			{tab=nom_tab+"_pro_"+[ii];
			document.getElementById(tab).style.visibility='hidden';
			document.getElementById(tab).style.display='none';}	
}
une pour gérer le 1er menu dit général
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
function menugene(tablo,nom){
  raz_cand(tablo,selection);
 selection=nom;
}
elle sert à donner le nom de l'ensemble général de calques, par exemple ceux du groupe et à faire un raz de l'ancien affichage.

la dernière est l'affichage à proprement parlé que j'appelle sur le click du sous-ensemble par exemple pro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
function menuclik(param,candid,nom) {
var tabs;
     raz_cand(candid,nom);
	if(param=="all"){
		for (var i=0; i<candid[nom]["reel"].length; i++)
			{tabs=nom+"_reel_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}
		for (var i=0; i<candid[nom]["social"].length; i++)
			{tabs=nom+"_social_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}
		for (var i=0; i<candid[nom]["prive"].length; i++)
			{tabs=nom+"_prive_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}
		for (var i=0; i<candid[nom]["pro"].length; i++)
			{tabs=nom+"_pro_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}}
 
	if(param=="reel"){
		for (var i=0; i<candid[nom]["reel"].length; i++)
			{tabs=nom+"_reel_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}}
 
	if(param=="social"){
		for (var i=0; i<candid[nom]["social"].length; i++)
			{tabs=nom+"_social_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}}
 
	if(param=="prive"){
		for (var i=0; i<candid[nom]["prive"].length; i++)
			{tabs=nom+"_prive_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}}
 
	if(param=="pro"){
		for (var i=0; i<candid["candidat"]["pro"].length; i++)
			{tabs=nom+"_pro_"+[i];
			document.getElementById(tabs).style.visibility='visible';
			document.getElementById(tabs).style.display='block';}}	
}

Le problème :
bin c'est que ça marche bien sous firefox, j'ai aucune erreur.
mais sous IE et opéra(sa console donne un peu plus d'informations) j'ai une erreur sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for (ii = 0;ii < candi[nom_tab]["reel"].length;ii++)
et sous opera et sous IE j'ai une erreur disant que à la ligne 63, 'reel' n'est pas un objet ou nul or la ligne 63 est avant les définitions des fonctions et le tableau existe vu que firefox le reconnait.

Personnellement, je comprend pas une telle différence de résultat en les différen ts navigateurs et surtout je ne vois pas comment y remédier.
Si quelqu'un pouvait m'aider?...