Avatar billede kkd Nybegynder
09. november 2003 - 20:15 Der er 16 kommentarer og
1 løsning

Gange og lægge sammen, mange gange

Hej...

Jeg vil gerne have en funktion, der kan gange to tal, lægge dem sammen med produktet af to andre tal, lægge det sammen med produktet af to helt andre tal o.s.v. altså
(x1*x2)+(y1*y2)+(z1*z2) osv.

tallene kommer fra formular-tekstfelter i formularen "udregn" og resultatet skal gerne vises i et tekstfelt kaldet "resultat" med onClick"function()" kommando

Ps. Jeg er aldeles nybegynder i JavaScript
Avatar billede roenving Novice
09. november 2003 - 21:12 #1
Du sætter bare udtrykket ind i en eval-funktion ...

<form id="minForm" name="minForm">
Indskriv beregning: <input name="minInput" type="text" value="Tom" onchange="this.form.minInput2.value=eval(this.value);" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Resultat: <input name="minInput2" type="text" value="Resultat" size="20" readOnly><br>
</form>
Avatar billede kkd Nybegynder
10. november 2003 - 08:16 #2
roenving>> For det første: Jeg er absolut neewbie i javascript - du snakker sort!
For det andet, hvis jeg kopierer din kode, er der kun et felt, hvor man kan skrive et regnestykke(minInput), så resultatet kommer i minInput2.
Det jeg er ude efter er noget der ganger tal i allerede eksisterende felt-par(ca. 20 par) for derefter at lægge alle tallene sammen!
Avatar billede roenving Novice
10. november 2003 - 13:07 #3
Jamen det var jo lige derfor jeg lagde et eksempel, for det skulle jo gerne være sådan at jeg gav et svar på det du havde brug for !-)

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gang og læg sammen</title>
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function beregn(f){
var ialt = 0;
for(i=0;f.elements.length>i;i+=2){
    if(f.elements[i].name.indexOf('tal')==0){
        ialt += (+f.elements[i].value)*(+f.elements[i+1].value);
    }
}
f.resultat.value = ialt;
}
</script>
<body>
<br>
<form id="minForm" name="minForm">
Par 1:<input name="tal1" type="text" value="1" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal2" type="text" value="2" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 2:<input name="tal3" type="text" value="3" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal4" type="text" value="4" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 3:<input name="tal5" type="text" value="5" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal6" type="text" value="6" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 4:<input name="tal7" type="text" value="7" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal8" type="text" value="8" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 5:<input name="tal9" type="text" value="9" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal10" type="text" value="10" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 6:<input name="tal11" type="text" value="11" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal12" type="text" value="12" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 7:<input name="tal13" type="text" value="13" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal14" type="text" value="14" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 8:<input name="tal15" type="text" value="15" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal16" type="text" value="16" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 9:<input name="tal17" type="text" value="17" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal18" type="text" value="18" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
Par 10:<input name="tal19" type="text" value="19" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">*
<input name="tal20" type="text" value="20" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20"><br>
<input type="text" name="resultat" readOnly><br>
<input type="button" value="Beregn" onclick="beregn(this.form)">
</form>
</body>
</html>
Avatar billede kkd Nybegynder
10. november 2003 - 13:56 #4
Takker... nu kan jeg se det (sådan da) men det virker i hvert fald...
Svar lige hvis du vil have point!
Avatar billede roenving Novice
10. november 2003 - 13:58 #5
Velbekomme '-)
Avatar billede kkd Nybegynder
10. november 2003 - 14:08 #6
Jeg lister lige et ekstraspm ind, hvis det er ok.

Hvis jeg gerne vil have det samlede resultat ganget med et tal, fra en tekstbox, hvordan gør jeg så det?
Avatar billede roenving Novice
10. november 2003 - 14:22 #7
function beregn(f){
var ialt = 0;
for(i=0;f.elements.length>i;i+=2){
    if(f.elements[i].name.indexOf('tal')==0){
        ialt += (+f.elements[i].value)*(+f.elements[i+1].value);
    }
}
f.resultat.value = ialt*(+f.tekstbox.value);
}

-- og tak for points ;~}
Avatar billede kkd Nybegynder
10. november 2003 - 14:58 #8
Underligt... det vil den ikke!

efter at have indsat følgende tekstbox ind, øverst i formularen, får jeg bare et NaN som resultat ved en udregning... Hvorfor?
<input name="tekstbox" type="text" value="0" onFocus="if(this.value==this.defaultValue)this.value='';" onBlur="if(this.value=='')this.value=this.defaultValue;" size="5">
Avatar billede roenving Novice
10. november 2003 - 15:11 #9
Fordi jeg var lidt doven med start-punktet !-)

Hvis du indsætter bagefter vil det virke !o]

-- for at undgå problemet skal man først finde det første tal-element og bagefter starte den løkke jeg har, så skal det se sådan ud:

function beregn(f){
var ialt = 0;
for(i=0;f.elements.length>i;i++){
    if(f.elements[i].name.indexOf('tal')==0){
        st = i;
        break;
    }
}

for(i=st;f.elements.length>i;i+=2){
    if(f.elements[i].name.indexOf('tal')==0){
        ialt += (+f.elements[i].value)*(+f.elements[i+1].value);
    }
}
f.resultat.value = ialt*(+f.tekstbox.value);
}
Avatar billede kkd Nybegynder
10. november 2003 - 15:30 #10
Nu bliver jeg rigtig besværlig ;oD

Kan man gøre således, at man kna benytte , og ikke kun den engelske version: .
og samtidig afrunde resultatet til 2 decimaler???

Du må lige sige til hvis det bliver for meget, for så opretter jeg gerne et nyt spm, med point!
Avatar billede roenving Novice
10. november 2003 - 16:01 #11
function lavTal(tal){
  t = tal.indexOf(",");
  if(t>-1){
    return tal.substring(0,t) + "." + tal.substring(t+1);
  }
}

function beregn(f){
var ialt = 0;
for(i=0;f.elements.length>i;i++){
    if(f.elements[i].name.indexOf('tal')==0){
        st = i;
        break;
    }
}

for(i=st;f.elements.length>i;i+=2){
    if(f.elements[i].name.indexOf('tal')==0){
        ialt += (+lavTal(f.elements[i].value))*(+lavTal(f.elements[i+1].value));
    }
}
f.resultat.value = ialt*(+lavTal(f.tekstbox.value));
}
Avatar billede kkd Nybegynder
10. november 2003 - 16:15 #12
jeg får igen en NaN værdi!
Avatar billede roenving Novice
10. november 2003 - 16:27 #13
Hvorfor prøvede du ikke med ene decimal-tal ?-)

-- det var nemlig der fejlen lå, jeg havde glemt at returnere tal uden decimaltegn !-)

<script language="javascript" type="text/javascript">
function lavTal(tal){
  t = tal.indexOf(",");
  if(t>-1){
    return tal.substring(0,t) + "." + tal.substring(t+1);
  }else return tal
}
function beregn(f){
var ialt = 0;
for(i=0;f.elements.length>i;i++){
    if(f.elements[i].name.indexOf('tal')==0){
        st = i;
        break;
    }
}
alert(st);
for(i=st;f.elements.length>i;i+=2){
    if(f.elements[i].name.indexOf('tal')==0){
        ialt += (+lavTal(f.elements[i].value))*(+lavTal(f.elements[i+1].value));
    }
}
f.resultat.value = ialt*(+lavTal(f.tekstbox.value));
}
</script>
Avatar billede kkd Nybegynder
10. november 2003 - 17:07 #14
Den afrunder ikke....
og i alertboksen står der altid 1, ligegyldig hvad jeg indtaster!
Avatar billede roenving Novice
10. november 2003 - 18:09 #15
Øeh, vil du have den til at afrunde ?-)

Det var ik' li'e så'n at gætte ...

-- li'som det er svært at gætte hvor mange cifre der ville skulle kunne være ...

Uff, for alerten, den skal bare væk, det er kun en debug-ting for at sikre at den talte f.elements rigtigt, så fjern denne linje:

alert(st);
Avatar billede kkd Nybegynder
12. november 2003 - 19:20 #16
Nevermind... hvis jeg har brug for det, opretter jeg et nyt spm. Du skal ikke besværes mere. Tak for hjælpen
Avatar billede roenving Novice
13. november 2003 - 00:02 #17
oki !-)
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