Aide pour tableau

Résolu
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011 - 2 mai 2006 à 18:46
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 - 3 mai 2006 à 09:31
Salut a tous et bravo pour le site qui m'a bien aidé
pour créer un menu avec un nombre de sous parents infinis.

j'ai recupere un source dans le quel la fonction:
t_menu('menu10');
qui permet de fermer le menu appelé menu10 lorsqu'on ouvre la page

J'aimerais que tout mes menus soit fermés lorsque je lance la page.
Ettant donné que j'ai un grand nombre de nemu, je voudrais éviter de faire
t_menu('menu10');
t_menu('menu11');
t_menu('menu12');
.....

j'ai donc eu l'idée de faire une boucle comme suit:
var i;
var j;
var Tableau = new Array(m,e,n,u,0,0);
for(i=0;i<10;i++)
{
Tableau[4]=i;
for(i=0;i<10;i++)
{
Tableau[5]=j;
<--et ici mettre l'equivalant du t_menu(Tableau);
}
}

Le bug, c'est que je nbe sais pas comment lui faire comprendre que mon tableau est une suite de caractére qui correspond à menuij

J'espere avoir été assez clair
Merci d'avance

7 réponses

Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
2 mai 2006 à 20:41
C'est très simple, et tupeux même faire plus simple que ce code (si je puis me permettre!!!)
for (i=0;i<nombre_de_menus;i++)
{
temp="menu"+i
t_menu(temp);
}

Normalement, ça devrait marcher!!! Le problème de javascript, c'est qu'on ne peut pas lui donner de type, il l'attribut tout seul. Donc, quand tu veux que ton nombre soit interprété comme un String (par exemple), tu l'additionnes avec ton string, comme ici (javascript fait alors une concaténation)
3
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
3 mai 2006 à 09:02
Merci, ton code est en effet bien plus simple.

Cependant le i est à definir en
var i;
mais comment dois-je definir le temp pour qu'il comprenne de c'est une chaine de caractere??
j'ai esseyé avec var temp; et string temp; mais la fonction ne remballe pas mes menus
3
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
3 mai 2006 à 09:12
En effet, j'ai oublié le i. Il faut dire qu'avec ma mémoire de poisson rouge(2 secondes, après j'oublie), et le fait que je n'ai pas testé le code, je me devais d'oublier certaines choses.
Pour le temp, var temp doit normalement marcher. C'est le principe du javascript, tu ne lui donnes pas de type, il le devine tout seul (ce qui parfois provoque des bugs d'ailleurs). Si ca ne marche pas avec var temp, c'est peut être que le problème vient d'ailleurs. Un bon moyen de savoir si ton var temp marche, c'est de lui demander de l'afficher, par exemple après sa définition:
(j'avais oublié le ; d'ailleurs, tu l'auras sans doute corrigé toi même)
temp="menu"+i;
alert(temp);

Si ca ne marche pas, regarde d'abord si ton portail lit bien tout, s'il a une erreur, il s'arrête (Sous internet explorer, une petite icone jaune apparait en bas à gauche de la page, au lieu d'une icone bleue)
3
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
3 mai 2006 à 09:13
bon le probleme n'est pas au niveau des definition, mais de la boucle:
si je fais ca :

var i;
var temp;
i=1;
temp="menu"+i;
t_menu(temp);
i=2;
temp="menu"+i;
t_menu(temp);
ca marche.

mais il semble que le for(i=0;i<9;i++){} ne s'execute pas.
Une idée????
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
3 mai 2006 à 09:15
Oui, tu commences à 0, et visiblement, tes menus commencent à 1. Il ne comprend pas la première, donc plante, et arrête de lire le code!!!
Dans ton for, tu tapes  for(i=1;i<9;i++){}
3
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
3 mai 2006 à 09:20
oui, j'avais bien corrigé le ; manquant.
J'ai un peu l'habitude du c, et du coup je l'ai vu.
J'ai esseyer de mettre alert(temp); dans mon for, mais ca ne bronche pas.
Par contre, si je le met en dehors, ca roule.

OK fin du bug: tu a raison, il faut commencer le comptage à partir de 1.
Bizarement, il ne m'indiquait pas d'erreur sur la page, et les autres scripts s'executait bien.

Grand Grand Grand Merci Hermios
3
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
3 mai 2006 à 09:31
Pas de quoi :)))
0
Rejoignez-nous