webForumDet fria alternativet

Problem med en BMI beräkning (If Sats).

13 svar · 1 600 visningar · startad av Puckosmucko

PuckosmuckoMedlem sedan apr. 20096 inlägg
#1

Hej jag har problem med ett javascript. Jag har fått uträkningen av BMI rätt. Men när jag lägger in en if sats fungerar det ej.
Jag skulle tro att problemet ligger i if satsens ({}) men det skulle också lika väl kunna vara variablel defineringen BMI.

Det skulle vara trevligt att få en lösning på detta.
MVH/ Puckosmucko (Viktor Sundelin)

Scriptet som sådant:

<html>
<body>
<h3>Beräkning av BMI</h3>
</body>
<!--------------------Beräkna-BMI med if sats---fungerar inte------------>
<script language="JavaScript">
<!--
function BMI(form_01){
vikt = prompt("Ange din vikt i kg.");
hojd = prompt("Ange din längd i m.");
BMI = ((vikt)/(hojd*hojd))

if ((14.9>BMI)){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du svälter");)
}
<!-------------------------------------------------->
else{(if(15<=BMI<=18.4)){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är underviktig.");)
}
}
<!-------------------------------------------------->
else{(if(18.5<=BMI<=22.9)){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är normal viktig.");)
}
<!-------------------------------------------------->
else{(if(23<=BMI<=27.5)){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är överviktig.");)
}
}
}<!--slut på funktionen BMI()-->
-->
</script>
<!-------------------------------------------------->

<form name="form_01">
<input type="button" name="Submit_01" value="Beräkna ditt BMI!" onClick="BMI(form_01)">
</form>
<!-------------------------------------------------->

<!--------------------Beräkna-BMI utan if sats--Detta script fungerar------>
<script language="JavaScript">
<!--
function BMI(form_02){
vikt = prompt("Ange din vikt i kilogram");
hojd = prompt("Ange din längd i meter");
confirm("Volymen är ca: " + ((vikt)/(hojd*hojd)) + "");
}
-->
</script>

<form name="form1">
<input type="button" name="Submit_02" value="Beräkna ditt BMI!" onClick="BMI(form_02)">
</form>
<!-------------------------------------------------->

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Java är inte javascript,

men du får använda dig av elseif istället för else eftersom du har fler villkor.

PuckosmuckoMedlem sedan apr. 20096 inlägg
#3

Jag har fortfarande problem. (if sats)

Hej!
Ska jag använda else if i hopssatt?
Skulle du kunna redigera scriptet som du säger att det ska vara. Har testat allt möjligt utan att det fungerar.

Scriptet kan bara köra de första raderna i if satsen. Vad kan det vara för fel?
Kan det vara något annat fel än bara if satsen

MVH/ Puckosmucko (Viktor Sundelin)

<script language="JavaScript">
<!--
function BMI(form_02){
var vikt = prompt("Ange din vikt i kilogram");
var hojd = prompt("Ange din längd i meter");
var BMI = Math.round(((vikt)/(hojd*hojd)))

if (14.9>BMI){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + " och du svälter"));
}

else if (15<=BMI<=18.4)
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är underviktig."));

else if (18.5<=BMI<=22.9)
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är normalviktig."));

else if (23<=BMI<=27.5)
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "och du är överviktig."));

else if (27.6<=BMI<=40)
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "du har överdrivet mycket fett."));

if (40<BMI){
BMI = confirm(("Ditt BMI är: " + ((BMI)) + "du är sjukligt fet."));
}

}
-->
</script>

<form name="form1">
<input type="button" name="Submit_02" value="Beräkna ditt BMI!" onClick="BMI(form_02)">
</form>

voigtann1Medlem sedan juni 20019 519 inlägg
#4

Välkommen till wF, det hade varit enklare om du använder dig av

-blocket vi har på webForum när du postar kod, det blir betydligt enklare att läsa.

Gjorde om hela din funktion, du måste använda dig av OR (|| i javascript)
[kod]<script language="JavaScript">
<!--
function BMI(){
	var vikt = prompt("Ange din vikt i kilogram");
	var hojd = prompt("Ange din längd i meter");
	var BMI = Math.round(vikt/(hojd*hojd));
	var BMIText = "";
	
	if (14.9>BMI)
		BMIText = "Ditt BMI är: {0} och du svälter";
	else if (15<=BMI || BMI<=18.4)
		BMIText = "Ditt BMI är: {0} och du är underviktig.";
	else if (18.5<=BMI || BMI<=22.9)
		BMIText = "Ditt BMI är: {0} och du är normalviktig.";
	else if (23<=BMI || BMI<=27.5)
		BMIText = "Ditt BMI är: {0} och du är överviktig.";
	else if (27.6<=BMI || BMI<=40)
		BMIText = "Ditt BMI är: {0} du har överdrivet mycket fett.";
	else if(BMI>40)
		BMIText = "Ditt BMI är: {0} du är sjukligt fet!";
	confirm(BMIText.replace("{0}",BMI));
}
-->
</script>

och i framtiden, postar i rätt forum så får du svar snabbare (java är inte samma sak som javascript).

Flyttade tråden till Javascript.

TravoniMedlem sedan okt. 20041 556 inlägg
#5

OT: BMI är riktigt ute måste jag säga. Fram med måttbandet istället.

metalboyMedlem sedan jan. 2005953 inlägg
#6

voigtann1 skrev:

du måste använda dig av OR (|| i javascript

Det ska väl ändå vara AND (&&). Blir väl lite galet annars...

voigtann1Medlem sedan juni 20019 519 inlägg
#7

sant, satt och testade lite, och jag fick fel hela tiden ;)

PuckosmuckoMedlem sedan apr. 20096 inlägg
#8

Hej igen.

Jag är tacksam för att du kunde hjälpa mig på så kort varsel.
Men jag har en annan fråga som gäller skriptet som du hade redigerat (BMI beräkningen).

Hur ska jag på bästa sätt köra skriptet som du skapade. Ska jag använda en knapp? Eller hur ska jag göra?.

Skulle du kunna redigera skriptet så jag kan köra det?

MVH/ Viktor Sundelin

TravoniMedlem sedan okt. 20041 556 inlägg
#9

<input type="button" onclick="BMI()" value="Go!"/>

PuckosmuckoMedlem sedan apr. 20096 inlägg
#10

Hej! voigtann1 (Fråga om kod-block + fel i script).

Du sa att man kan använda sig av kod-blocket. Men var kan jag få tag på det?

MVH/ Puckosmucko (Viktor Sundelin).

Men det var också en annan sak som jag funderade på:

Hej igen.
Det kanske blir lite tjatigt med detta JavaScript men det är fortfarande något fel på skriptet. Det visar bara att man är underviktig än vad man skriver in för värde på vikt och längd. Värdet på uträkningen stämmer men det är fel på påståendet som kommer efter.

Jag har förgäves försökt att hitta vad det kan vara för fel på detta javascript. Men har inte lyckats så bra. Jag undrar om någon skulle kunna ta sig en titt på vad det är som kan orsaka detta problem. En sak är säkert det måste ha något att göra med if satsen.

Är tacksam om någon kunde hjälpa till. Är mottaglig för alla typer av funderingar.

voigtann1Medlem sedan juni 20019 519 inlägg
#11

Du skriver [kod_] och [/kod_] runt din kod (men inte med _ i blocket, vad är det för kod du kör på nu? Har du bytt ut || mot && som metalboy skrev?

PuckosmuckoMedlem sedan apr. 20096 inlägg
#12

voigtann1

Koden som jag har problem med:

<script language="JavaScript">
<!--
function BMI(){
	var vikt = prompt("Ange din vikt i kilogram");
	var hojd = prompt("Ange din längd i meter");
	var BMI = Math.round(vikt/(hojd*hojd));
	var BMIText = "";
	
	if (14.9>BMI)
		BMIText = "Ditt BMI är: {0} och du svälter";
	else if (15<=BMI || BMI<=18.4)
		BMIText = "Ditt BMI är: {0} och du är underviktig.";
	else if (18.5<=BMI || BMI<=22.9)
		BMIText = "Ditt BMI är: {0} och du är normalviktig.";
	else if (23<=BMI || BMI<=27.5)
		BMIText = "Ditt BMI är: {0} och du är överviktig.";
	else if (27.6<=BMI || BMI<=40)
		BMIText = "Ditt BMI är: {0} du har överdrivet mycket fett.";
	else if(BMI>40)
		BMIText = "Ditt BMI är: {0} du är sjukligt fet!";
	confirm(BMIText.replace("{0}",BMI));
}
-->
</script>

<input type="button" onclick="BMI()" value="Beräkna ditt BMI !"/>
voigtann1Medlem sedan juni 20019 519 inlägg
#13

Följ metalboys inlägg:

metalboy skrev:

Det ska väl ändå vara AND (&&). Blir väl lite galet annars...

Byt ut || mot && då det skall vara and och inte or i if frågorna.

PuckosmuckoMedlem sedan apr. 20096 inlägg
#14

Tack för hjälpen.

Tack för hjälpen voigtann1, metalboy och Travoni.
Väldigt tacksam för att svaren kom så snabbt.
MVH/ Puckosmucko (Viktor Sundelin)

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)