Permalänk
Avstängd

javascript kalkylering hjälp

Hejsan

Sitter och pillar med ett javascript som jag inte får att fungera.

Har ett script som ska räkna ut kostnader. En grundkostnad på studenter (X) och en för ickestudenter (y), dessa skall sedan baseras på antalet nätter man ska stanna på hotell (y) och via en knapp skall detta pris kalkyleras ut (och kanske skrivas ut någonstans men har inte bestämmt mig)

så här har jag försökt lösa det men får det inte att funka:

} function CheckPrices(){ var nonstudents = document.frmSample.nonstudno var students = document.frmSample.studno if ((nonstudents.value!=null) || (nonstudents.value!="") || (students.value!=null) || (students .value!="")) { var totval totval = (students.value*100)(nonstudents*150) alert("Totala kostnaden = "+totval) }

<form name="frmSample" method="post" action="#" onSubmit="return CheckPrices()"> <p>Student + Nummer av nätter :<input type="text" name="studno"></p> <p>Ickestudent + nummer av nätter : <input type="text" name="nonstudno"></p> <p> <input type="submit" name="Submit" value="Check Prices"></p> </form>

Någon som har någon ide?

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk

Du bör avsluta varje rad med ;
Det ska även vara "&&" istället för "||".

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Jag kan tyvärr inte javascript, men när jag kastar ett getöga på koden så funderar jag ju på vad som händer i raden "totval = (students.value*100)(nonstudents*150)" om låt säga nonstudents.value är 42 och students .value är null.

Borde det inte vara någon typ av AND-konstruktion i if-satsen, eller hur ska totval-beräkningen klara av null-värden?

Och borde det inte också vara ett "+" i totval-beräkningen?

Men som sagt var: *STOR* reservation för att jag inte kan javascript.

Permalänk
Citat:

Ursprungligen inskrivet av gnurk
Jag kan tyvärr inte javascript, men när jag kastar ett getöga på koden så funderar jag ju på vad som händer i raden "totval = (students.value*100)(nonstudents*150)" om låt säga nonstudents.value är 42 och students .value är null.

Borde det inte vara någon typ av AND-konstruktion i if-satsen, eller hur ska totval-beräkningen klara av null-värden?

Och borde det inte också vara ett "+" i totval-beräkningen?

Men som sagt var: *STOR* reservation för att jag inte kan javascript.

Ändrar han till det jag skrev så kommer inte students.value kunna vara null. Jo, det bör vara ett plus. Annars kommer de att multipliceras...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Avstängd

jo det stämmer gnurk, inte helt säker här själv nämligen så har bara slängt ihop det som jag först tänkte på. Uträkningarna med *- + är heller inte helt korrekt.

edit: ja när det är ändrat nu så funkar ju det i alla fall till hälften. koden läses av men blir lite fel. om man i students skriver 1 så blir svaret 1100 [object htmlinput]150. men om man då säger att priset ska vara fast säg 50 och gångra det med antal nätter + huvudpriset på 100 eller 150. det måste ju också krypa in någons stans

tack för all hjälp hittils, känns som jag kan få löst det ikväll!

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk
Medlem

Du kanske behöver två separata if-satsen som kollar om nonstudents.value respektive students.value är tomma eller null och i så fall sätter dessa till 0 för att totval-beräkningen ska fungera. Annars kommer inget att beräknas så länge en av dessa saknar värde pga &&-satsen.

Permalänk
Citat:

Ursprungligen inskrivet av gnurk
Du kanske behöver två separata if-satsen som kollar om nonstudents.value respektive students.value är tomma eller null och i så fall sätter dessa till 0 för att totval-beräkningen ska fungera. Annars kommer inget att beräknas så länge en av dessa saknar värde pga &&-satsen.

Du skrev fel du skrev nonstudents istället för nonstudents.value....
Testa detta:

function CheckPrices() { var nonstudents = document.frmSample.nonstudno; var students = document.frmSample.studno; if ((nonstudents.value!=null) && (nonstudents.value!="") && (students.value!=null) && (students .value!="")) { var totval = (students.value*100) + (nonstudents.value*150); alert("Totala kostnaden = "+totval); } }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av KurreKula
Du skrev fel du skrev nonstudents istället för nonstudents.value....
Testa detta:

function CheckPrices() { var nonstudents = document.frmSample.nonstudno; var students = document.frmSample.studno; if ((nonstudents.value!=null) && (nonstudents.value!="") && (students.value!=null) && (students .value!="")) { var totval = (students.value*100) + (nonstudents.value*150); alert("Totala kostnaden = "+totval); } }

jaha sedär, där var det ju en trevlig felskrvning. Dock blir tyvärr siffrorna i formuläret galna ändå. beräkningen vad en inmatningen på formulären och dess kostnad måste komma in någonstans och frågan är då var?

inmatning*80+100/150

gör en trevlig editering här: när man ser resultatet nu blir det alltså inmatning100150 vilket är helt galet.

funderar på om det kanske är hela scriptet som är totalt värdelöst =/

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk
Citat:

Ursprungligen inskrivet av Jare
jaha sedär, där var det ju en trevlig felskrvning. Dock blir tyvärr siffrorna i formuläret galna ändå. beräkningen vad en inmatningen på formulären och dess kostnad måste komma in någonstans och frågan är då var?

inmatning*80+100/150

gör en trevlig editering här: när man ser resultatet nu blir det alltså inmatning100150 vilket är helt galet.

funderar på om det kanske är hela scriptet som är totalt värdelöst =/

Det är för att du sätter ihop strängar. testa följande:
var totval = parseInt((students.value*100)) + parseInt((nonstudents.value*150));

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Jag tycker din formel "inmatning*80+100/150" ser allmänt skum ut.

Vad är det du vill beräkna egentligen?

Permalänk

detta funkar

function CheckPrices() { var nonstudents = document.frmSample.nonstudno; var students = document.frmSample.studno; if ((nonstudents.value!=null) && (nonstudents.value!="") && (students.value!=null) && (students .value!="")) { var int1 = parseInt((students.value*100)); var int2 = parseInt((nonstudents.value*150)); var totval = int1 + int2; alert("Totala kostnaden = "+totval); } }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av KurreKula
detta funkar

function CheckPrices() { var nonstudents = document.frmSample.nonstudno; var students = document.frmSample.studno; if ((nonstudents.value!=null) && (nonstudents.value!="") && (students.value!=null) && (students .value!="")) { var int1 = parseInt((students.value*100)); var int2 = parseInt((nonstudents.value*150)); var totval = int1 + int2; alert("Totala kostnaden = "+totval); } }

EDIT: ändrade .value!=Null på alla och då funkade det faktiskt. Sista frågan här som jag berättar för gnurk. för att kunna ha den uträkningen, eftersom nuvarande kod bara gångrar med siffran man stoppar in i fältet

gnurk. hm ska försöka förklara mer tydligt, lite luddig efter en dag vid koden:

säg såhär:

du ska på konferans med möjlighet till att beställa extra hotellnätter:

Antingen är du student då har du en grundavgift på 100 sen en hotellkostnad på 80 per natt

Eller såär du ickestudent och har en grundavgift på 150 och en hotellkostnad på 80 per natt.

altså blir uträkningen: formulärdata(antalet nätter)*hotellpris+100 eller 150 beroende på om du är student eller inte

hoppas det blev lite klarare då

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Jare
jag fick faktiskt inte detta att funka utan trycker man på beräkna så händer inget

Att det inte funkar beror kanske på att antingen nonstudents.value eller students.value saknar värde och då blir &&-satsen falsk.

Permalänk
Avstängd

gah jag kom ju på det. Hela grundinmatningen ang. pris är fel, det är ju inte 100 eller 150 som är beroende på den inmatning man gör utan det är ju priset 80.

var int1 = parseInt((students.value*80)); var int2 = parseInt((nonstudents.value*80));

edit: känner att jag förklarar helt luddigt. den fasta kostnaden skall ju inte blandas ihop med uträkningen eftersom den då dubbleras utan bara som +kostnad i slutet av uträkningen!

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk
Medlem

Borde du inte kunna klämma in något likande detta i koden:

var base = 150;

if ((students.value!=null) && (students .value!=""))
{
base = 100;
}

var totval = int1 + int2 + base;

Permalänk
Avstängd

gnurk vill rikta ett enormt jävla tack till dig för att du löste den. var själv inne på att lägga en +100 efter student.value*80+100 men eftersom int1 + int2 var plus kunde jag inte ha +150 i den andra valuen.

Enormt tack till er båda som fick fram en lösning hade verkligen inte kunnat komma på det själv!

Visa signatur

Sydney > Sverige
[Those where the days gaming] Ioiny Or-lo - ReDevils n' Fusion for life rip -05 ; Namow - TSA n' ReDevils Jedi rip -05:: rDe Chimaera PvPer! Pre-cu veteran

Permalänk
Medlem

HEj. Jag gör samma sak. jag skulle gärna vilja få lite hjälp, jag satt hur länge som helst o försökte komma på ett sett o så gjorde ni det.

Jag undrar dock lite. om man läser koden står det ju ingen stans 200 eller 150.

har ni lyckats lösa den ? ska lämna in sidan o allt på måndag. blir galen på detta.

vore tacksamm om ni lyckades lösa problemet med att typ få fram va det kostar. sitter o funderar på vart ni syftar på man ska klämma in Var base = 150; osv

Permalänk
Medlem

När jag trycker submit kommer inget upp :S det visas inget ngn stans.
enligt uppgiften som är Ditt JavaScript ska kontrollera att namnet bara innehåller bokstäver, att email-adressen har rätt format och att antal övernattningar är numeriskt. I händelse av fel i inmatad data ska ett felmeddelande visas i en div-tagg, som från början är dold. JavaScriptet ska även räkna ut konferensavgiften som är 100 euro för student och 150 euro annars, plus 80 euro per övernattning. Priset visas i ett meddelandefönster som från början är dolt. :S Hjälp snälla.