Avatar billede topsite Nybegynder
14. august 2004 - 20:58 Der er 13 kommentarer

Plus variabler

Jeg har forsøgt at lave følgende:

function regn() {

f = document.form1;
f.samletpris.value = parseInt(f.p1.value + f.p2.value + f.p3.value + f.p4.value + f.p5.value)

}

Hvis jeg i p1.value skriver 6
og i p2.value skriver 6

Bliver resultatet 66 ?
Det skulle gerne blive 12!?

Hvordan får man den til at plusse rigtig sammen!?
Avatar billede viciodk Praktikant
14. august 2004 - 21:00 #1
function regn() {
  f = document.form1;
  f.samletpris.value = parseInt(f.p1.value) + parseInt(f.p2.value) + parseInt(f.p3.value) + parseInt(f.p4.value) + parseInt(f.p5.value))
}
Avatar billede jakobclausen Nybegynder
14. august 2004 - 21:01 #2
Jeg tror du er nødt til at have parseInt rundt om hver enkel variabel

f.samletpris.value = parseInt(f.p1.value) + parseInt(f.p2.value) + parseInt(f.p3.value) + parseInt(f.p4.value) + parseInt(f.p5.value)
Avatar billede topsite Nybegynder
14. august 2004 - 21:01 #3
Det har jeg også prøvet, men så får jeg bare NaN i samletpris.value
Avatar billede jakobclausen Nybegynder
14. august 2004 - 21:03 #4
men har du testet resultatet uden at sætte det ind i feltet ?

write(parseInt(f.p1.value + f.p2.value + f.p3.value + f.p4.value + f.p5.value));
Avatar billede roenving Novice
14. august 2004 - 21:03 #5
Hvis du _ved_ at alle værdierne er tal-værdier, kan du faktisk nøjes med:

function regn() {
f = document.form1;
f.samletpris.value = +f.p1.value + +f.p2.value + +f.p3.value + +f.p4.value + +f.p5.value;

}
Avatar billede topsite Nybegynder
14. august 2004 - 21:04 #6
function regn() {
  f = document.form1;
  alert(parseInt(f.p1.value) + parseInt(f.p2.value) + parseInt(f.p3.value) + parseInt(f.p4.value) + parseInt(f.p5.value))
}

Prøvede at alert'e det, det giver også bare teksten: NaN
Avatar billede roenving Novice
14. august 2004 - 21:05 #7
Hvis et felt er tomt kan du ikke typecaste det til et tal !-)

Så bliver du nødt til at sætte en default-værdi på 0 ind !o]
Avatar billede topsite Nybegynder
14. august 2004 - 21:05 #8
function regn() {
f = document.form1;
f.samletpris.value = +f.p1.value + +f.p2.value + +f.p3.value + +f.p4.value + +f.p5.value;
}

Det her virker, tak! Svar lige ROENVING
Avatar billede jakobclausen Nybegynder
14. august 2004 - 21:06 #9
roenving >> hvis det virker uden parseInt() burde det vel også med ??
Avatar billede roenving Novice
14. august 2004 - 21:09 #10
Faktisk er typecasting med + noget mere robust end med parseInt/Float, men jeg er faktisk overrasket over, at den er så robust, at den accepterer tomme værdier, hvilket de andre jo absolut ikke gør !-)

-- og velbekomme '-)
Avatar billede roenving Novice
14. august 2004 - 21:12 #11
Til gengæld kan parse-metoderne si ugyldige tegn i enden fra, så det er forskellige fordele, man får ud af det !-)
Avatar billede mik789 Nybegynder
15. august 2004 - 21:02 #12
smart. men kan nogen lægge lidt dokumentation for dette (kan ikke lige finde noget på JavaScript Central). Jeg gætter på at +'erne der er skrevet sammen med variablerne svarer til Number(), så

+f.p1.value + +f.p2.value + +f.p3.value + +f.p4.value + +f.p5.value;

er det samme som:

Number(f.p1.value) + Number(f.p2.value) + Number(f.p3.value) + Number(f.p4.value) + Number(f.p5.value);
Avatar billede roenving Novice
15. august 2004 - 21:27 #13
Det kan jeg heller ikke, men min reference paralleliserer +val og -val, og præciserer, at de returnerer int- eller float-værdier også hvis val er en string ...

Men det ser umiddelbart ud til, at Number(val) og +val opfører sig ens ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester