JeuWeb - Crée ton jeu par navigateur
Passer une variable par reference? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Passer une variable par reference? (/showthread.php?tid=4793)

Pages : 1 2


RE: Passer une variable par reference? - Roworll - 06-05-2010

Pourquoi concaténer dans la fonction et ne pas le faire sur la valeur de retour ?
Code :
var test = 'toto';
var myConcat='';
myConcat+=fonc(test);
myConcat+=fonc(' patate');
alert(myConcat);

function fonc(chaine)
{
     return chaine += ' et tata';
}



RE: Passer une variable par reference? - Argorate - 06-05-2010

Sephi: J'ai pas parler de moi, j'ai dit "on"^^ Mais personnellement je pense pouvoir faire preuve d'un minimum d'objectivité pour me jugé même si c'est vrai que c'est pas le plus évident...

Si la valeur de la variable d'origine ne sera plus jamais réutilisé et qu'on en es sur a 100% je vois pas l'utilité d'avoir la version "transformé" de la variable...

bref, puisque ça a l'air de vous chagriner, je vous en montre un peu plus, sachant que des contrainte font que je n'ai pas droit au php mais que je dois quand même faire du dynamique, dois tout faire en JS... ^^

function create_tree()
{
var chaine = recup_url();
var texte = '<table border="0" cellpadding="0" cellspacing="0" class="tableau_tree"><tr><td><a class="lien_no_deco" href="..."><img border="0" src="${url.context}/images/icons/home.png"></a></td>';

texte += tree(chaine);

document.getElementById('tree').innerHTML = texte;
}


function tree(chaine)
{
var texte='';
var taille = chaine.length;
var i = 0;
while(i < taille)
{
texte += '<td><img border="0" src="${url.context}/images/icons/separateur.png" /></td><td>&nbsp;&nbsp;<a class="lien_no_deco" href="..." style="text-decoration:none;">' + chaine[i] + '</a>&nbsp;&nbsp;</td> ';
i++;
}
texte += '<td><img border="0" src="${url.context}/images/icons/separateur_fin.png" /></td></tr></table>';

return texte;
}

Bref... C'était pas vraiment ça le pb, ni la question Smile

J'ai réussit a finir le truc et ça marche bien.


RE: Passer une variable par reference? - Sephi-Chan - 06-05-2010

Oui Argo, j'ai bien compris ce que tu voulais dire. Ma remarque concerne l'autoévaluation en général (j'édite pour le préciser). Wink

Pour ton script, que contient cette variable chaine, dont la valeur est renvoyée par la fonction recup_url() ?

J'ai peut-être une piste d'amélioration.


Sephi-Chan


RE: Passer une variable par reference? - Argorate - 06-05-2010

Ça récup tout ce qui est dans l'url a partir d'un certain point:

exemple:
Code :
http://www.jeuweb.org/test.htm?t=root/dossier1/ssdossier1/

Ça pourrait être 'dossier1/ssdossier1/' par exemple. Le but étant de faire arborescence (c'est une GED).

PS: j'ai récup cette applis de mer... c'est pas de ma conception hein Big Grin
J'avoue que là on s'embête pour pas grand chose... mais si tu as une évol. je t'écoute Smile


RE: Passer une variable par reference? - Sephi-Chan - 06-05-2010

D'accord, et tu récupères ce chemin sous forme d'un tableau genre [ 'root', 'dossier1', 'ssdossier1' ] ?


Sephi-Chan


RE: Passer une variable par reference? - Argorate - 06-05-2010

Oui c'est un split("/"); effectivement.

PS: le "root" n'est pas comprit. Il n'est pas nécessaire.


RE: Passer une variable par reference? - Sephi-Chan - 06-05-2010

À mon sens, tu devrait faire des fonctions plus unitaires. Chacun son rôle et les hippopotames seront bien gardés !

Par exemple :


function tableForTree(pathFraments){
var content = '';

for(i in pathFraments){
content += cellForPathFragment(pathFraments[i]);
}

return '<table border="0" cellpadding="0" cellspacing="0" class="tableau_tree"><tr>' +
'<td><a class="lien_no_deco" href="..."><img border="0" src="${url.context}/images/icons/home.png"></a></td>' +
content +
'<td><img border="0" src="${url.context}/images/icons/separateur_fin.png" /></td>' +
'</tr></table>';
}

function cellForPathFragment(pathFragment){
return '<td><img border="0" src="${url.context}/images/icons/separateur.png" /></td>' +
'<td><a class="lien_no_deco" href="...">' + pathFragment + '</a></td>';
}

Ensuite, un petit appel du genre :


var pathFraments = recup_url();
document.getElementById('tree').innerHTML = tableForTree(pathFraments);


Sephi-Chan


RE: Passer une variable par reference? - Argorate - 06-05-2010

En fait, j'ai simplifié un peu, car il n'y a pas de fonction "tree()" mais deux fonctions qui gére différement si la taille de l'arbre est trop grand par rapport au design pour pas que ça depasse etc. et un if qui aiguille soit sur l'une soit sur l'autre, c'est pour ça que j'ai laisser l'initialisation de la variable texte dans la fonction principale car quand j'ai besoin (comme ça m'es arrivé) de changer le border du tableau, j'ai pas a le faire deux fois (dans chacune des fonctions).

Sinon je suis pas fan des boucles for, (et il y a d'autre condition que l'indice pour ma boucle...)

Bref c'est pas tout a fait ça, mais bon, la je suis entrain de voir si je peux pas factorisé les deux fonction en une seule (ça l'alourdirais mais du coup ça serait plus propre je suis d'accord Smile)

PS: en plus je travail sur des .ftl donc j'ai pas de couleur syntaxique (encore moins d'auto-completion), c'est vraiment la misère ce "projet" (rafistolage)... Et je dois tout mettre au même endroit, pas le droit a plusieur fichier, donc j'ai du js, du css et du html sur ma page... hurk^^
Vous commencez a me plaindre un peu? :p


EDIT:

J'ai reussit a factorisé et du coup c'est bcp bcp mieux Smile
la fonction principal ressemble plus qu'a ça:

function create_tree()
{
document.getElementById('tree').innerHTML = tree(recup_url());
}
Big Grin