confirmation de la possibilité d'utiliser des tableaux à [javascript] - Programmation
Marsh Posté le 15-05-2001 à 17:09:57
ben oui c'est possible a condition qu'il soit bien utilisé.
exemple de création d'un tableau a 3 dimension
Code :
|
voila, mais a mon avis evites de faire des tableaux a 3 dimensions, ca commence a faire beaucoup pour du javascript !!!
Marsh Posté le 15-05-2001 à 17:24:21
ok, merci.
je viens de voir mon erreur. Je déclais new Array [], alors que c'était ()..
thx
Marsh Posté le 16-05-2001 à 11:05:37
Est-ce nécessaire de rajouter une dimension supplémentaire pour avoir
targ[i][j][k] ?, car en adaptant ton script il m'indique que l'objet targ [..][..].0 est null ou n'est pas un objet. dois-je rajouter une dimension supplémentaire pour identifier tous les targ [i][j][k]? (nota : il y a peu d'éléments en tout, une 40aine tout au plus)
Mon script commence ainsi (il sert a definir une page.htm en fonction d'un choix menu et sous-men et d'un troisième paramètre frame..):
<script language="JavaScript">
<!--
var target=new Array(6);
for (var i=0; i<6;i++) {
target[i]= new Array(10);
for (var j=0; j<10; j++) {
target[i][j]= new Array(2);
}
}
//colonne menu, sous menu (commencant à 1 à cause premierselected rendu null , Frame gauche-droite
target[0][1][0]=SousMenus/info/General.htm;
target[0][1][1]=Infoproxis/infoGeneral.htm;
target[0][2][0]=SousMenus/info/Chiffres.htm;
target[0][2][1]=Infoproxis/ServiceInterne.htm;
target[0][3][0]=SousMenus/info/PlanSite.htm;
target[0][3][1]=Infoproxis/SiteMap.htm;
target[0][4][0]=SousMenus/info/General.htm;
target[0][4][1]=SousMenus/info/General.htm;
target[1][1][0]=SousMenus/info/General.htm;
target[1][1][1]=SousMenus/info/General.htm;
target[1][2][0]=SousMenus/info/General.htm;
target[1][2][1]=SousMenus/info/General.htm;
target[1][3][0]=SousMenus/info/General.htm;
target[1][3][1]=SousMenus/info/General.htm;
target[1][4][0]=SousMenus/info/General.htm;
target[1][4][1]=SousMenus/info/General.htm;
function cible(dim1,dim2){
targ1=target[dim1][dim2.options[dim2.selectedIndex]][0];
targ2=target[dim1][dim2.options[dim2.selectedIndex]][1];
if (dim2.options[dim2.selectedIndex]!= 0)
{
parent.leftFrame.location=targ1;
parent.mainFrame.location=targ2;
}
}
//-->
</script>
-----------------body-----------------
<select name="InfoProxis" onChange="cible(0,this)">
<option>-Selectionnez-</option>
<option>General</option>
<option>Chiffres</option>
<option>Plan Site</option>
<option>Rechercher</option>
</select>
thx
Marsh Posté le 16-05-2001 à 11:53:12
si il te retourne ce genre d'erreur c'est que l'element dim2.options[dim2.selectedIndex] n'est pas compris entre 1 et 4, c'est donc un element non initialisé.
Essai de faire un alert(dim2.options[dim2.selectedIndex]); pour voir ce qui est réellement utilisé comme valeur.
[edit]--Message édité par darkoli--[/edit]
Marsh Posté le 16-05-2001 à 12:20:22
Il ne me retourne pas la boite d'alerte, mais deux fenêtres d'erreur:
la premiere me dit que 'SousMenus' est indefini (là j'ai regardé, mais il me semblait que l'on pouvait affecter à l'objet tableau une URL, mais bon, pour l'instant je passe)
la deuxième m'indique toujours que targ [..][..].0 est null ou n'est pas un objet?!
normalement dim2.options[dim2.selectedIndex] devrait prendre une valeur qui peut être comprise jusqu'à 9 (c'est la variable j ), qui doit être = à la valeur de l'index retourné par le choisx de l'option. Peut-être faut-il le mettre en forme differement?
Marsh Posté le 16-05-2001 à 12:32:55
j'ai également redefini des éléments =0, mais rien.
Je te remontre le code là où j'ai fait la modif:
<script language="JavaScript">
<!--
var target=new Array(6);
for (var i=0; i<6;i++) {
target[i]= new Array(10);
for (var j=0; j<10; j++) {
target[i][j]= new Array(2);
}
}
//colonne menu, sous menu (commencant à 1 à cause premierselected rendu null , Frame gauche-droite
target[0][0][0]=0;
target[1][0][0]=0;
target[2][0][0]=0;
target[0][1][0]=SousMenus/info/General.htm;
target[0][1][1]=Infoproxis/infoGeneral.htm;
target[0][2][0]=SousMenus/info/Chiffres.htm;
target[0][2][1]=Infoproxis/ServiceInterne.htm;
target[0][3][0]=SousMenus/info/PlanSite.htm;
target[0][3][1]=Infoproxis/SiteMap.htm;
target[0][4][0]=SousMenus/info/General.htm;
target[0][4][1]=SousMenus/info/General.htm;
target[1][1][0]=SousMenus/info/General.htm;
target[1][1][1]=SousMenus/info/General.htm;
target[1][2][0]=SousMenus/info/General.htm;
target[1][2][1]=SousMenus/info/General.htm;
target[1][3][0]=SousMenus/info/General.htm;
target[1][3][1]=SousMenus/info/General.htm;
target[1][4][0]=SousMenus/info/General.htm;
target[1][4][1]=SousMenus/info/General.htm;
function cible(dim1,dim2){
targ1=target[dim1][dim2.options[dim2.selectedIndex]][0];
targ2=target[dim1][dim2.options[dim2.selectedIndex]][1];
alert(dim2.options[dim2.selectedIndex]);
if (dim2.options[dim2.selectedIndex]!= 0)
{
parent.leftFrame.location=targ1;
parent.mainFrame.location=targ2;
}
}
function al(){
alert(dim2.options[dim2.selectedIndex]);
}
al()
//-->
</script>
Marsh Posté le 16-05-2001 à 14:14:53
J'ai essayé avec une 4eme dimension, mais cela me fait planter IE .. (problème de cadre???!!!?)
<script language="JavaScript">
<!--
var target=new Array(6);
for (var i=0; i<6;i++) {
target[i]= new Array(10);
for (var j=0; j<10; j++) {
target[i][j]= new Array(2);
for (var k=0; j<2; k++) {
target[i][j][k]= new Array(40);
}
}
}//colonne menu, sous menu (commencant à 1 à cause premierselected rendu null , Frame gauche-droite
target[0][0][0]=0;
target[1][0][0]=0;
target[2][0][0]=0;
target[0][1][0]=SousMenus/info/General.htm;
target[0][1][1]=Infoproxis/infoGeneral.htm;
target[0][2][0]=SousMenus/info/Chiffres.htm;
target[0][2][1]=Infoproxis/ServiceInterne.htm;
target[0][3][0]=SousMenus/info/PlanSite.htm;
.
.
.
Marsh Posté le 15-05-2001 à 16:53:44
deux ou trois dimensions..est-ce possible?
(exemple tab[0][0][0])