Avatar billede lequet Nybegynder
27. maj 2002 - 00:58 Der er 7 kommentarer og
1 løsning

Forkert resultat ved addition

Jeg sidder med følgende to input felter. Problemet er at værdien i feltet "pris" skal opdateres når feltet "test" ændres, således at værdien af "test" ganges med 10 og lægges til værdien i "pris".

Problemet er bare at hvis jeg i "test" skriver 10 bliver "pris" til 0100 hvor det skulle have været 100. Hvad kan problemet være?

Her er de to felter

<input type="text" name="test" size="2" value="0" onChange="document.forms[0].pris.value += (this.value * 10)">

<input type="text" name="pris" size="2" value="0">
Avatar billede jakoba Nybegynder
27. maj 2002 - 01:04 #1
et tekstfelt er per definition af typen string, dvs en tekststreng. og en tekststreng afferet til et tal vil få javascript til at convertere tallet til en tekststreng der så appendes istedet for at tekstrengen gøres til et tal der kan adderes til det andet:
Men multiplikation vil konvertere begge operander til tal hvis det er muligt, så prøv:

onChange="this.form.pris.value = this.value*10 +1*this.form.pris.value">

mvh JakobA
Avatar billede jakoba Nybegynder
27. maj 2002 - 01:05 #2
Ups.  afferet -> adderet
Avatar billede lequet Nybegynder
27. maj 2002 - 01:08 #3
Takker, det hjalp... Nu er problemet bare at hvis jeg først skriver 10, så bliver resultatet 100, hvis jeg derefter ombestemmer mig og retter det til 20 så bliver det jo 100 + (20 * 10) altså 300 istedet for 200 :o( den kan jeg ikke lige kringle, og den er jo lidt uheldig
Avatar billede lequet Nybegynder
27. maj 2002 - 01:24 #4
Hmm, måske en "Godkend bestilling" side ville være mere passende :) Det her virker som en temmeligt kryptisk måde at gøre det på.

Men takker endnu en gang, det laste da mit oprindelige problem :)
Avatar billede jakoba Nybegynder
27. maj 2002 - 01:31 #5
er det ikke blot at udelade sidste led:

onChange="this.form.pris.value = this.value*10">

tak for pts.
Avatar billede lequet Nybegynder
27. maj 2002 - 01:51 #6
Nej desværre, for så kommer problemet med at der er flere felter end det ene, og så vil prisen kun gælde for det ene felt man sidst skrev i.

Om ikke andet må jeg oprette et seperat spm til det, hvis det bliver for stort et problem :)
Avatar billede jakoba Nybegynder
27. maj 2002 - 02:22 #7
Næe, det er nemt nok, blot man ved hvad sagen drejer sig om.

Det du skal bruge er så een stor beregning der regner ud for alle felter på een gang.

og den beregning skal så gentages hver gang der ændres noget i et at felterne:

script i head:
<script type='text/javascript'> <!--

function opdaterSum( frmObj ) {
    var nySum = 0;
    nySum += frmObj.test.value *10;
    nySum += frmObj.vare1.value *5;
    nySum += frmObj.vare2.value *10;
    nySum += frmObj.vare3.value *15;
//  ...
    frmObj.pris.value = nySum;
}; //end opdaterSum( Form object )

// --> </script>


og i dine inputfelter skriver du så:
<input type="text" name="test" size="2" value="0" onChange="opdaterSum(this.form)">

mvh JakobA
Avatar billede lequet Nybegynder
27. maj 2002 - 03:00 #8
Typisk, ser aldrig den mest indlysende løsning :)

Takker igen igen :)
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