Passer un tableau en paramètre d'une fonction javascript

Résolu
brumara Messages postés 2 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 mars 2007 - 28 mars 2007 à 10:14
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 28 mars 2007 à 11:10
Bonjour,

Je dois rendre dynamique les parties de codes qui sont en gras, car mon but est de les remplir avec un requête sql à la fin.
<script type= "text/javascript">
           var g = new MWJ_graph(700,300,MWJ_stacked,true,false);
           g.addDataSet('<% =rscamem(25)%>','', [90,90,85,63,90,85] );
           g.addDataSet('<% =rscamem(26)%>','',[10,10,15,37,10,15]);
           g.setTitles('','','%');
           g.setXAxis('Frais Financier','Produits financiers','Frais personnel','Charges récupérées','Produit,'Autres');            
           g.setYAxis(10);
           g.buildGraph();
       </script> 
Voici une des fonction derrières
this.setXAxis = function (){
  //je vous passe le blabla
}

Vu que je ne connais pas le nombre de champs qui sera générer par ma requête.

Je ne peux pas faire
g.setXAxis(champ1 , champ2,champ3,champ4,champ5,champ6); 

J'ai tout premièrement essayé de les concaténer et de passer une string 
var test =[10,10,15,37,10,15]
g.addDataSet('<% =rscamem(26)%>','',test);
 Cela n'a pas fonctionné

Sinon je n'arrive pas à trouver comment passer une vecteur en paramètre, en c++ c'est facile tu utilises un pointeur, mais je suis perdue en javascript,
Voici ce que j'ai essayé
 var test=new Array(6);
           test[0]='Frais Financier'
           test[1]='Produits financiers'
           test[2]='Frais personnel'
           test[3]='Charges récupérées'
           test[4]='Produit et accessoires'
           test[5]='Autres'
           g.setXAxis.apply(this,test);
           g.setXAxis.apphy(test);
           g.setXAxis(test);

Sinon peut-être qu'il y a une autre façon de concaténer les champs, mais je ne vois pas comment.

Merci beaucoup de votre aide à l'avance.

3 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 mars 2007 à 10:34
Bonjour,

on va oublier la POO, pour l'exemple.

<Script    type="Text/JavaScript">

function test1(toto)
{
    for ( var n=0;n<toto.length;n++ )
    {
        alert( toto[n]    );
    }
}

var titi=new Array("a","b");
test1(titi);
test1(['c','d']);

function test2()
{
    for ( var n=0;
2
brumara Messages postés 2 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 28 mars 2007
28 mars 2007 à 10:54
Merci beaucoup,

Je n'ai eu besoin que de modifier l'entête de mes fonctions l'entête "toto" pour pouvoir passer mon vecteur en paramètre en rendre mon site dynamique.

this.setXAxis = function ( toto ){
  //je vous passe le blabla
}

Mais dans ta 2ième partie de solution comment pourrais-je concaténer mes arguments étant donné que je ne connais pas leur nombre?
exemple:
test2(  for(i =0;i<toto.length();i++){toto[i]+','})
 
De toute façon la première solution fonctionne. Je suis seulement curieuse. 
Merci beaucoup.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 mars 2007 à 11:10
>>comment pourrais-je concaténer mes arguments
    on pourrait aussi effectivement, et les éclater avant utilisation.
    ( mais bof car 2 traitements à faire )

    var res="";
    for ( var n=0;n<limite;n++ )
    {
       res+=poste[n]+"\t");
    }
    passer res.substr(0,res.length-1);
    et dans la fonction faire un split sur "\t"
  


>>étant donné que je ne connais pas leur nombre
    leur nombre c'est la taille du tableau
       toto.length si un tableau est passé
       arguments.lengts si on exploite le tableau des paramètres passés
    ou alors je n'ai pas compris ?




<hr />



Cordialement            Bul    
0
Rejoignez-nous