un IF dentro l'altro... Perchè no?!?!?

  • Creatore Discussione Creatore Discussione sabiuf
  • Data di inizio Data di inizio

sabiuf

Nuovo Utente
1 Giu 2012
13
0
0
Ragazzi ho trovato che l'errore per il quale non si inizializza questo script è dovuto al fatto che ci sia un IF dentro un altro!!
Con le seguenti stringhe intendo fare una stima del fabbisogno proteico giornaliero, prendendo spunto da questa http://life.familyeducation.com/protein/foods/48678.html tabella.

Codice:
<html>
	<head>
		<title>
			Proteine
		</title>
	</head>

	<body>
		<H2 align="center"> Calcolo del fabbisogno proteico giornaliero <H2> <br>


<script type="text/javascript">


	var sesso=prompt("Qual e' il tuo sesso? Digita 'M' o 'F'.");
	var eta =prompt("Inserisci la tua eta':");
	var fabb=0;
	var mesi;
	var incinta;
	var allattamento;

	if (sesso==m || sesso==M) { 
				if (eta<1) { document.write("ciao");
						mesi=prompt("Quanti mesi ha il bambino?");
						if (mesi<=5) {fabb=fabb+13};
						else { fabb=fabb+14 }; 
					   }

			 else { if (eta>=1 && eta<=3)	{ fabb=fabb+16 };
					else {if (eta>=4 && eta <=6) { fabb=fabb+24 };
						else {if (eta>=7 && eta <=10) { fabb=fabb+28 };
							else {if (eta>=11 && eta <=14) { fabb=fabb+45 };
								else {if (eta>=15 && eta <=18) { fabb=fabb+59 };
									else {if (eta>=19 && eta <=24) { fabb=fabb+58 };
										else {if (eta>=25) { fabb=fabb+63 };
										}
									}
								}
							}
						}
					}
				}
									
								
							
						
					
				
				}

	else if (sesso==f || sesso=F) { 
					incinta= prompt ("La donna e' incinta? Digitare SI o NO");
					if (incinta==SI || incinta==si) {fabb=fabb+60};

					else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");
						if (allattamento==SI || allattamento==si) { 
											    mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
												if (mesi<=6) {fabb=fabb+65};
												else {fabb=fabb+62};
											  } 
					}



					else {if (eta>=1 && eta<=3)	{ fabb=fabb+16 };
						else {if (eta>=4 && eta <=6) { fabb=fabb+24 };
							else {if (eta>=7 && eta <=10) { fabb=fabb+28 };
								else {if (eta>=11 && eta <=14) { fabb=fabb+45 };
									else {if (eta>=15 && eta <=18) { fabb=fabb+59 };
										else {if (eta>=19 && eta <=24) { fabb=fabb+58 };
											else {if (eta>=25) { fabb=fabb+63 };
											
											}
										}
									}
								}
							}
						}
					}
										
									
								
							
						
					

					

		document.write("La persona necessita di un fabbisogno proteico giornaliero di"+" "+fabb+" "+grammi".");


</script>

		

	</body>

</html>
 
Salve provi cosi.... ho compilato solo la prima parte per mancanza di tempo.... chiaramente il resto è sulla stessa riga....

Se ha problemi.... lo dica pure... buona serata :

HTML:
<html>
	<head>
		<title>
			Proteine
		</title>

		<H2 align="center"> Calcolo del fabbisogno proteico giornaliero <H2> <br>


<script type="text/javascript">



           
                 function controllo() { 

	var sesso=prompt("Qual e' il tuo sesso? Digita 'M' o 'F'.");
	var eta = prompt("Inserisci la tua eta': ( Per età minore di un anno digita 0");
         var fabb="";
	var mesi="";
	var incinta="";
	var allattamento="";




	if ((sesso=='m') || (sesso=='M')) {


      if ( eta<1 ) { 
                          mesi=prompt("Quanti mesi ha il bambino?");
                         if (mesi<=5) {var fabb=13;
						 } else { var fabb=14; }; 
						
         var x ='ciao';
            document.getElementById("saluto").innerHTML = x; } 
				
								
   else { if ((eta>=1) && (eta<=3)) { var fabb=16 }; 

             if ((eta>=4) && (eta <=6)) { var fabb=24 }; 

                  if ((eta>=7) && (eta <=10)) { var fabb=28 };

			if ((eta>=11) && (eta <=14)) { var fabb=45 };

				if ((eta>=15) && (eta <=18)) { var fabb=59 };

					if ((eta>=19) && (eta <=24)) {var fabb=58 };

						
                                                      if (eta>=25) { var fabb=63 };




 }
	
					
								
						}											
			

	document.getElementById("saluto1").innerHTML ='La persona necessita di un fabbisogno proteico giornaliero di '+fabb+' grammi';  };



 
</script>

	</head>

	<body>
		<div id="saluto"></div>
               <div id="saluto1"></div>

	                            <script type="text/javascript"> controllo(); </script>   

           </body>

</html>
 
Niente da fare!!

La ringrazio per il tempo dedicato, ma non funziona (molto probabilmente per errori che commetto inconsapevolmente, non essendo un esperto in campo js).
Per esempio non conosco la funzione getElementByID oppure .innerHTML... Fatto stà che il codice è diventato il seguente, ma non funziona ugualmente!

Codice:
<html>
	<head>
		<title>
			Proteine
		</title>

		<H2 align="center"> Calcolo del fabbisogno proteico giornaliero <H2> <br>


<script type="text/javascript"> 



           
function controllo() { 

	var sesso=prompt("Qual e' il tuo sesso? Digita 'M' o 'F'.");
	var eta = prompt("Inserisci la tua eta': ( Per età minore di un anno digita 0");
        var fabb="";
	var mesi="";
	var incinta="";
	var allattamento="";



	
	if ((sesso=='m') || (sesso=='M'))				 	{


      if ( eta<1 ) { 
                          mesi=prompt("Quanti mesi ha il bambino?");
                         if (mesi<=5) {var fabb=13;
						 } else { var fabb=14; }; 
						
         var x ='ciao';
            document.getElementById("saluto").innerHTML = x; 
		   								} 
					
								
   else { if ((eta>=1) && (eta<=3)) { var fabb=16 }; 

             if ((eta>=4) && (eta <=6)) { var fabb=24 }; 

                  if ((eta>=7) && (eta <=10)) { var fabb=28 };

			if ((eta>=11) && (eta <=14)) { var fabb=45 };

				if ((eta>=15) && (eta <=18)) { var fabb=59 };

					if ((eta>=19) && (eta <=24)) {var fabb=58 };

						
                                                      if (eta>=25) { var fabb=63 };
	}					
				
					
 document.getElementById("saluto1").innerHTML ='La persona necessita di un fabbisogno proteico giornaliero di '+fabb+' grammi';  };

	else if ((sesso==f) || (sesso=F)) { 
				incinta= prompt ("La donna e' incinta? Digitare SI o NO");
				if (incinta==SI || incinta==si) {var fabb=fabb+60};

				else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");
					if ((allattamento==SI) || (allattamento==si)) { 
									mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
									if (mesi<=6) {var fabb=fabb+65};
									else {var fabb=fabb+62};
									 } 
		}



			if ((eta>=1) && (eta<=3)	{ var fabb=fabb+16 };
				if ((eta>=4) && (eta <=6)) { var fabb=fabb+24 };
					if ((eta>=7) && (eta <=10)) { var fabb=fabb+28 };
						if ((eta>=11) && (eta <=14)) { var fabb=fabb+45 };
							if ((eta>=15) && (eta <=18)) { var fabb=fabb+59 };
								if ((eta>=19) && (eta <=24)) { var fabb=fabb+58 };
									if (eta>=25) { var fabb=fabb+63 };
											
						
						}
					
										
									
								
							
						
					

					

document.getElementById("saluto1").innerHTML ='La persona necessita di un fabbisogno proteico giornaliero di '+fabb+' grammi';  }; 


</script>

		

	</body>

</html>
 
Salve provi cosi :

HTML:
<html>
	<head>
		<title>
			Proteine
		</title>

		<H2 align="center"> Calcolo del fabbisogno proteico giornaliero <H2> <br>


<script type="text/javascript">

	var sesso=prompt("Qual e' il tuo sesso? Digita 'M' o 'F'.");
	var eta = prompt("Inserisci la tua eta': ( Per età minore di un anno digita 0");
         var fabb="";
	var mesi="";
	var incinta="";
	var allattamento="";

           
                 function controllo() { 






	if ((sesso=='m') || (sesso=='M')) {

                       if ( eta<1 ) { 
                          mesi = prompt("Quanti mesi ha il bambino?");
                         if (mesi<=5) {var fabb=13;
						 } else { var fabb=14; }; 
						
         var x ='ciao';
            document.getElementById("saluto").innerHTML = x; } 
				
								
   else { if ((eta>=1) && (eta<=3)) { var fabb=16 }; 

        if ((eta>=4) && (eta <=6)) { var fabb=24 }; 

        if ((eta>=7) && (eta <=10)) { var fabb=28 };

	if ((eta>=11) && (eta <=14)) { var fabb=45 };

		if ((eta>=15) && (eta <=18)) { var fabb=59 };

		if ((eta>=19) && (eta <=24)) {var fabb=58 };

                 if (eta>=25) { var fabb=63 };  } } else {	



         if ((sesso=='f') || (sesso=='F')) { incinta= prompt ("La donna e' incinta? Digitare 'SI' o 'NO'"); 


if (incinta=='SI' || incinta=='si') {var fabb = 60 } 
   else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");  
		 			  

	 if ((allattamento=='SI') || (allattamento=='si')) { 
		mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
			if (mesi<=6) {var fabb=65}
				else {var fabb=62};
						 }
				


     else  {   if ((eta>=1) && (eta<=3) )	{ var fabb=16 };
	if ((eta>=4) && (eta <=6)) { var fabb=24 };
		if ((eta>=7) && (eta <=10)) { var fabb=28 };
		if ((eta>=11) && (eta <=14)) { var fabb=45 };
			if ((eta>=15) && (eta <=18)) { var fabb=59 };
			if ((eta>=19) && (eta <=24)) { var fabb=58 };
			if (eta>=25) { var fabb=63 };
											
						
						}
					


                                       }} };
					
	

	document.getElementById("saluto1").innerHTML ='La persona necessita di un fabbisogno proteico giornaliero di '+fabb+' grammi';  };

 
</script>

	</head>

	<body>
		<div id="saluto"></div>
               <div id="saluto1"></div>

	                            <script type="text/javascript"> controllo(); </script>   

           </body>

</html>


Ma mi scusi se le preciso una cosa.... il controllo dell'allattamento è previsto solo per le femminucce ?
I maschietti direttamente a trovarsi un lavoro devono andare ?? :)
Mi perdoni... ma notato e scritto...
 
Ultima modifica:
Grazie mille!

Tante grazie, così funziona!
Comunque io per allattamento ho capito allattamento attivo, inteso per una mamma che allatta il proprio bambino!! Dite che sia il contrario? Ovvero in periodo di allattamento "passivo", cioè nel primo mese di nascita di un bambino??
 
No chiedo scusa... mi riferisco a questo passaggio :

HTML:
if ((sesso=='f') || (sesso=='F')) { incinta= prompt ("La donna e' incinta? Digitare 'SI' o 'NO'"); 


if (incinta=='SI' || incinta=='si') {var fabb = 60 } 
   else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");
fatto cosi... il controllo se la donna è incinta avviene solo se ha una femminuccia.... guardi bene :)
 
Io farei cosi... se le va le dia uno sguardo :)

HTML:
<html>
<head>
<title>
Proteine
</title>

<H2 align="center"> Calcolo del fabbisogno proteico giornaliero <H2> <br>

<script type="text/javascript">

var sesso = "";
var eta="";
var fabb="";
var mesi="";
var incinta="";
var allattamento="";

function controllo() {

var x ='Ciao, per sapere il valore proteico di cui si necessita, rispondi alle domande che ti verranno poste.';
document.getElementById("saluto").innerHTML = x;

incinta= prompt ("La donna e' incinta? Digitare 'SI' o 'NO'");

if ((incinta=='SI') || (incinta=='si')) {var fabb = 60 }
else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");

if ((allattamento=='SI') || (allattamento=='si')) {
mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
if (mesi<=6) {var fabb=65}
else {var fabb=62};
}  else {

sesso=prompt("Qual e' il tuo sesso? Digita 'M' o 'F'.");

eta = prompt("Inserisci la tua eta': ( Per età minore di un anno digita 0");

if ((sesso=='m') || (sesso=='M')) {

if ( eta<1 ) {
mesi = prompt("Quanti mesi ha il bambino?");
if (mesi<=5) {var fabb=13;
} else { var fabb=14; };

}

else { if ((eta>=1) && (eta<=3)) { var fabb=16 };

if ((eta>=4) && (eta <=6)) { var fabb=24 };

if ((eta>=7) && (eta <=10)) { var fabb=28 };

if ((eta>=11) && (eta <=14)) { var fabb=45 };

if ((eta>=15) && (eta <=18)) { var fabb=59 };

if ((eta>=19) && (eta <=24)) {var fabb=58 };

if (eta>=25) { var fabb=63 };  }; } else {

if ((sesso=='f') || (sesso=='F')) {

if ( eta<1 ) {
mesi = prompt("Quanti mesi ha la bambina?");
if (mesi<=5) {var fabb=13; } else { var fabb=14; };

}

else { if ((eta>=1) && (eta<=3)) { var fabb=16 };

if ((eta>=4) && (eta <=6)) { var fabb=24 };

if ((eta>=7) && (eta <=10)) { var fabb=28 };

if ((eta>=11) && (eta <=14)) { var fabb=45 };

if ((eta>=15) && (eta <=18)) { var fabb=59 };

if ((eta>=19) && (eta <=24)) {var fabb=58 };

if (eta>=25) { var fabb=63 };  }; } } }

};

document.getElementById("saluto1").innerHTML ='La persona necessita di un fabbisogno proteico giornaliero di '+fabb+' grammi';  };

</script>

</head>

<body>
<div id="saluto"></div>
<div id="saluto1"></div>

<script type="text/javascript"> controllo(); </script>

</body>

</html>
 
Ultima modifica:
Forse non ho capito bene io...

...ma fatto così il controllo non avviene sempre?
Deve chiedere da quanti mesi la donna è incinta SOLO se è incinta! Così invece inizia con il prompt che salva il risultato su "incinta".. o no?
 
Buonasera, infatti io io scritto che IO avrei fatto cosi... chiaramente lei può scegliere di importare come vuole, mi sono permesso di cambiarlo xchè se lei guarda bene il suo.... solo se il nato è una femminuccia portava dopo la richiesta se la donna era incinta.... la invito a riguardare bene quello che lei ha detto che funzionava bene... :)

Ho appena controllato quello che ho ancora sul mio pc.... se dico che la donna non è incinta non mi chiede altro... va avanti e mi chiede se è in allattamento.. se no... chiede l'eta del bimbo o persona....

Ho compreso lei cosa vuole dire... basta che cambi .... se ha problemi me lo dica e se le va vedremo insieme... :)
 
Ultima modifica:
Penso di aver capito l'errore che c'è alla base do tutto, ovvero un errore di interpretazione da parte di uno dei due!
Io come "incinta" ho inteso che la donna che stiamo esaminando sia incinta.. la sua interpretazione forse riguarda il "feto".. ovvero è maschio o femmina? Un po' come era successo per l'allattamento!
L'individuo allatta o viene allattato nel periodo di allattamento?
E se si mette incinta è la donna incinta oppure si sta analizzando il nascituro?
Non penso che un individuo non ancora nato necessiti di 60g/giorno di proteine ;)
 
Mi legga per cortesia.... io ho solo notato questo e fatto notare :

HTML:
if ((sesso=='f') || (sesso=='F')) { incinta= prompt ("La donna e' incinta? Digitare 'SI' o 'NO'"); 

if (incinta=='SI' || incinta=='si') {var fabb = 60 } 
   else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");  		  

if ((allattamento=='SI') || (allattamento=='si')) { 
	mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
	if (mesi<=6) {var fabb=65}
		else {var fabb=62};
				 }

Messo cosi il codice interpreta.... il bimbo è femmina , si allora la donna è incinta ?? ..

Mi sono chiesto semplicemente xchè se il bambino è maschio non si debba chiedere la stessa cosa...
La invito a riguardarsi il codice... se poi per lei va bene cosi... sta benissimo anche a me :)
Buona serata.
 
Penso di dover riguardare tutto a mente fresca quando mi collego dal computer.. domani rileggeró tutto con calma.. mi scuso se sto creando confusione intanto!
 
Mi legga per cortesia.... io ho solo notato questo e fatto notare :

HTML:
if ((sesso=='f') || (sesso=='F')) { incinta= prompt ("La donna e' incinta? Digitare 'SI' o 'NO'"); 

if (incinta=='SI' || incinta=='si') {var fabb = 60 } 
   else { allattamento=prompt("La donna e' in allattamento? Digitare SI o NO");  		  

if ((allattamento=='SI') || (allattamento=='si')) { 
	mesi=prompt ("Da quanti mesi la donna e' in allattamento?");
	if (mesi<=6) {var fabb=65}
		else {var fabb=62};
				 }



Mi sono chiesto semplicemente xchè se il bambino è maschio non si debba chiedere la stessa cosa...

Non si chiede perchè qua stiamo analizzando la persona. Se è incinta, la persona che è incinta avrà bisogno di x proteine, e dal momento che un maschio non può essere "incinto" per il maschio non si chiede :P
É chiaro ora cosa intendevo, oppure c'è ancora qualche ambiguità?

Nel caso in cui sia chiaro, volevo chiedere a chiunque legga o anche a lei, Cavaliere123, se mi può indicare qualche guida di Javascript (intendo fare lo stesso script utilizzando però un form con checkbox o selection).
 

Discussioni simili