[javascript] confirmation de la possibilité d'utiliser des tableaux à

confirmation de la possibilité d'utiliser des tableaux à [javascript] - Programmation

Marsh Posté le 15-05-2001 à 16:53:44    

deux ou trois dimensions..est-ce possible?
 
(exemple tab[0][0][0])

Reply

Marsh Posté le 15-05-2001 à 16:53:44   

Reply

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 :
  1. var dimension_1=10;
  2. var dimension_2=10;
  3. var dimension_3=10;
  4. var tab=new Array(dimension_1);
  5. for (var i=0;i<dimension_1;i++) {
  6.   tab[i]=new Array(dimension_2);
  7.   for (var j=0;j<dimension_2;j++) {
  8.     tab[i][j]=new Array(dimension_3);
  9.     }
  10.   }


 
voila, mais a mon avis evites de faire des tableaux a 3 dimensions, ca commence a faire beaucoup pour du javascript !!!

Reply

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

Reply

Marsh Posté le 16-05-2001 à 10:09:32    

Au fait, je te remercie pour ta réponse très pro.

Reply

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

Reply

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]

Reply

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?

Reply

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>

Reply

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;
.
.
.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed