Utiliser une variable d'une fonction dans une autre fonction.

Résolu
henri -  
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   - 21 déc. 2020 à 19:12
bonjour j'ai un souci, tout le debut du code marche parfaitement mais la deuxieme focntion de veut pas prendre la valeur de "name" qui est definit dans la fonction juste au dessus( function obj () )
voici mon code:
button.onclick = function obj(){
	var obj = document.getElementById("obj");

	let name = prompt("tu as combiens d'objectifs?");
	if (name==0){
		alert("vous n'avez donc pas d'objectjs aujourd'hui? ");

	}
	if (name<=10){ 
		alert(name+ ", c'est parfait!");
	}
	else if (name>10){
		alert("vous pouvez avoir que 10 objectifs qutodiens.");
		name =  10
	}

		if (name==0){
			obj1.style.display = "none";
			obj2.style.display = "none";
			obj3.style.display = "none";
			obj4.style.display = "none";
			obj5.style.display = "none";
			obj6.style.display = "none";
			obj7.style.display = "none";
			obj8.style.display = "none";
			obj9.style.display = "none";
			obj10.style.display = "none";
			obj.style.height="0px";
			 
		}
		
	return name;
	}
function moy(){
	var t = obj();
	var imgP="";
	var tf = getNbTf();
	var p = 100*(tf/t);
	if (p>=0 && p<5){ 
	 imgP = "../images/cercleR0.png";
	} else if (p>=5 && p<15){ 
	 imgP = "../images/cercleR10.png"; 
	} else if (p>=15 && p<22.5){
	 imgP ="../images/cercleR20.png";
	} else if (p>=22.5 && p<27.5){
	 imgP ="../images/cercleR25.png"; 
	} else if (p>=27.5 && p<35){
	 imgP = "../images/cercleR30.png";
	} else if (p>=35 && p<45){
	 imgP = "../images/cercleR40.png";
	} else if (p>=45&& p<55){
	 imgP = "../images/cercleR50.png";
	} else if (p>=55 && p<65){
	 imgP = "../images/cercleR60.png";
	} else if (p>=65 && p<72.5){
	 imgP = "../images/cercleR70.png";
	} else if (p>72.5 && p<=77.5){
	 imgP = "../images/cercleR75.png"; 
	} else if (p>77.5 && p<=85){
	 imgP = "../images/cercleR80.png";
	} else if (p>85 && p<=95){
	 imgP = "../images/cercleR90.png";
	} else if (p>95 && p<=100){
	 imgP = "../images/cercleR100.png";
	 alert("Vous n'avez plus aucune tâche à accomplir aujourd'hui");
	}
	//console.log('Moyenne :',p);
	document.getElementById("cercleR").src = imgP;
	}



Voyez-vous d'où viens le problème?
A voir également:

2 réponses

jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Voyez-vous d'où viens le problème?

A part le fait qu'il te faudrait apprendre les bases de la programmation en JS ? Non...

Sinon, en partant du principe que tu veux pouvoir accéder à ta variable name en dehors de ta fonction, il faut rendre sa portée "globale". Pour ça, on déclare la variable EN DEHORS des fonctions.

Comme ceci
 var name="";
 button.onclick = function obj(){
	var obj = document.getElementById("obj");

	name = prompt("tu as combiens d'objectifs?");
	if (name==0){
		alert("vous n'avez donc pas d'objectifs aujourd'hui? ");
	}
	if (name<=10){ 
		alert(name+ ", c'est parfait!");
	} else if (name>10){
		alert("vous pouvez avoir que 10 objectifs quotients.");
		name =  10;
	}

		if (name==0){
			obj1.style.display = "none";
			obj2.style.display = "none";
			obj3.style.display = "none";
			obj4.style.display = "none";
			obj5.style.display = "none";
			obj6.style.display = "none";
			obj7.style.display = "none";
			obj8.style.display = "none";
			obj9.style.display = "none";
			obj10.style.display = "none";
			obj.style.height="0px";
			 
		}
		
	return name;
	}
function moy(){
	var t = obj();
	var imgP="";
	var tf = getNbTf();
	var p = 100*(tf/t);
	if (p>=0 && p<5){ 
	 imgP = "../images/cercleR0.png";
	} else if (p>=5 && p<15){ 
	 imgP = "../images/cercleR10.png"; 
	} else if (p>=15 && p<22.5){
	 imgP ="../images/cercleR20.png";
	} else if (p>=22.5 && p<27.5){
	 imgP ="../images/cercleR25.png"; 
	} else if (p>=27.5 && p<35){
	 imgP = "../images/cercleR30.png";
	} else if (p>=35 && p<45){
	 imgP = "../images/cercleR40.png";
	} else if (p>=45&& p<55){
	 imgP = "../images/cercleR50.png";
	} else if (p>=55 && p<65){
	 imgP = "../images/cercleR60.png";
	} else if (p>=65 && p<72.5){
	 imgP = "../images/cercleR70.png";
	} else if (p>72.5 && p<=77.5){
	 imgP = "../images/cercleR75.png"; 
	} else if (p>77.5 && p<=85){
	 imgP = "../images/cercleR80.png";
	} else if (p>85 && p<=95){
	 imgP = "../images/cercleR90.png";
	} else if (p>95 && p<=100){
	 imgP = "../images/cercleR100.png";
	 alert("Vous n'avez plus aucune tâche à accomplir aujourd'hui");
	}
	//console.log('Moyenne :',p);
	document.getElementById("cercleR").src = imgP;
   alert(name);
	}
 

0
henri
 
ah oui désoler je viens de débuter et je viens ici pour justement apprendre avec des personne de plus je n'avais pas mis la ligne juste au dessus mais la variable était déjà déclarer en dehors.Voici donc mon code.
let button = document.querySelector('button');
var name = 0;
 button.onclick = function obj(){
 var obj = document.getElementById("obj");
 name = prompt("tu as combiens d'objectifs?");
 if (name==0){
  alert("vous n'avez donc pas d'objectifs aujourd'hui? ");
 }
 if (name<=10){ 
  alert(name+ ", c'est parfait!");
 } else if (name>10){
  alert("vous pouvez avoir que 10 objectifs quotients.");
  name =  10;
 }

  if (name==0){
   obj1.style.display = "none";
   obj2.style.display = "none";
   obj3.style.display = "none";
   obj4.style.display = "none";
   obj5.style.display = "none";
   obj6.style.display = "none";
   obj7.style.display = "none";
   obj8.style.display = "none";
   obj9.style.display = "none";
   obj10.style.display = "none";
   obj.style.height="0px";
    
  }
  
 return name;
 }
function moy(){
 var t = obj();
 var imgP="";
 var tf = getNbTf();
 var p = 100*(tf/t);
 if (p>=0 && p<5){ 
  imgP = "../images/cercleR0.png";
 } else if (p>=5 && p<15){ 
  imgP = "../images/cercleR10.png"; 
 } else if (p>=15 && p<22.5){
  imgP ="../images/cercleR20.png";
 } else if (p>=22.5 && p<27.5){
  imgP ="../images/cercleR25.png"; 
 } else if (p>=27.5 && p<35){
  imgP = "../images/cercleR30.png";
 } else if (p>=35 && p<45){
  imgP = "../images/cercleR40.png";
 } else if (p>=45&& p<55){
  imgP = "../images/cercleR50.png";
 } else if (p>=55 && p<65){
  imgP = "../images/cercleR60.png";
 } else if (p>=65 && p<72.5){
  imgP = "../images/cercleR70.png";
 } else if (p>72.5 && p<=77.5){
  imgP = "../images/cercleR75.png"; 
 } else if (p>77.5 && p<=85){
  imgP = "../images/cercleR80.png";
 } else if (p>85 && p<=95){
  imgP = "../images/cercleR90.png";
 } else if (p>95 && p<=100){
  imgP = "../images/cercleR100.png";
  alert("Vous n'avez plus aucune tâche à accomplir aujourd'hui");
 }
 //console.log('Moyenne :',p);
 document.getElementById("cercleR").src = imgP;
    alert(name);
  
 return name;
 }
0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Le problème, c'est que tu redéclarais ta variable dans ta fonction
let name = prompt("tu as combiens d'objectifs?");

( let et var servent à initialiser des variables ... ( renseignes toi sur la portée des variables avec let et var ) )

Donc, là, avec le nouveau code, ça devrait fonctionner... ( à condition que ta fonction moy() soit appellée après le click sur ton autre bouton).
0