lol, oui je voulais dire pour régler mon problème il fallait mettre la deuxieme fonction appelée à l'intérieur de la fonction qui l'appelle, et non dans la page au même niveau que la fonction appelante.
Je faisais comme ça pour rencontrer le problème (c'est pas le code là mais le principe) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 1) début de page javascript.
2) la variable globale.
3) fonction2(_,_){
// traitement avec la variable globale mais erreur : variable indéfinie.
}
4) fonction1(_){
fonction2(_,_); // Appel de la fonction2.
fonction1(); // on relance la fonction1.
}
5) window.onload=function(){
- initialisations.
- affichages.
- fonction1(_);
- suite..
}
6) fin de la page javascript. |
Et donc la fonction2 avait du mal à reconnaître la variable globale ou alors comme le disait micetf peut-être que c'était dû la mauvaise valeur d'une variable dans la fonction2, je sais pas.
En tous cas, en mettant maintenant la fonction2 dans le corp de la fonction1 ça marche bien mais avec le code qu'on m'a donné ici, car moi quand j'essaie de faire ce principe avec un code quelconque de mon invention bein ça ne fonctionne pas je comprend le principe mais j'ai du mal à l'appliquer je crois.
Avec le principe de la fonction2 dans la fonction1 que je viens d'apprendre le principe devient :
1 2 3 4 5 6 7
|
3) fonction1(_){ // ici la fonction2 n'est plus juste appelée, elle est carrément à l'intérieur de la fonction1.
4) fonction2(_,_){
// traitement avec la variable globale et là c'est ok avec le programe des autres mais jamais avec un des miens.
}
fonction2(); // on relance la fonction2. J'ai essayé avec et sans les paramètres, ça marche pas dans mes codes mais ça marche avec celui des autres.
} |
Exemple d'un code (même s'il ne travaille pas sur une variable globale, le principe de la fonction dans une fonction est appliqué) :
Par exemple pour faire augmenter la taille d'un div, j'utilise une touche A et pour faire diminuer j'utilise la touche B, j'ai essayé avec les deux principes, fonction2 au même niveau que fonction1 et fonction2 dans la fonction1, j'ai toujours un problème pour arriver à faire augmenter la taille du div.
Ici ce n'est pas une variable globale qui me pose problème mais une variable que je ne sais pas faire varier, mais le principe d'une fonction dans une autre fonction est appliqué, je n'ai pas d'exemple pour le moment où je veux travailler sur une variable globale.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| // Zoom la map par les touches Q et S changement dans les options du jeu.
function zoom(pas){
var tzoom={};
tzoom.x=map.taillex;
tzoom.y=map.tailley;
var taillezoom=0;
function repete(){
tzoom.x=tzoom.x+pas;
tzoom.y=tzoom.y+pas;
taillezoom=tzoom.x+'px'+' '+tzoom.y+'px';
cadremap.style.backgroundSize="taillezoom";
console.log(tzoom);
return tzoom;
}
if (okzoom) {
var pression=setTimeout(repete,1000);
}else
{
okzoom=false; // ?
clearTimeout(pression);
}
} |
La déclaration de tzoom j'ai essayé de la mettre ailleurs, dans l’évènement "touche du clavier" qui appelle la fonction zoom() et c'est pareil, tzoom reste toujours à la valeur de "taille du div+pas" et ne varie pas.
Je voulais varier la taille du div "cadremap" mais sans toucher à la taille rélle de la map qui est map.taillex,map.tailley.
Partager