Avatar billede floetti Nybegynder
05. marts 2006 - 19:28 Der er 17 kommentarer og
1 løsning

opdatere felt ved at addere flere felter sammen

Hej

Nu har jeg siddet her og kikket rundt, men kan ikke finde en løsning.

Jeg vil gerne have et felt eller div til at ændre sig ved at addere flere felter sammen.

F.eks. har jeg 5 felter der hedder voksen_1, voksen_2 ... voksen_5

Så skal et felt addere aller sammen.. (uden at man behøver at trykke på en botton)

//floetti
Avatar billede dennism Nybegynder
05. marts 2006 - 19:37 #1
Du laver en funktion som f.eks. hedder sum, som tager værdien fra voksen_1, 2 osv. og adderer. Denne værdi placeres i en felt som f.eks. hedder sum. Altså, f.eks.:

function sum() {
  sum.value=voksen_1.value+voksen_2.value+voksen_3.value+voksen_4.value+voksen_5.value
}

Så laver du en onChange="sum();" på dine felter (voksen_1, 2 osv.)
Avatar billede floetti Nybegynder
05. marts 2006 - 19:50 #2
hmm... når jeg udfylder et af felterne, så siger siden:

Object doesn't support this property or method
Avatar billede mclemens Nybegynder
05. marts 2006 - 19:51 #3
Nogenlunde sådan her:

<script>
function udregn(){
udregnet=(+document.getElementById("input_1").value*1+document.getElementById("input_2").value*1+document.getElementById("input_3").value*1+document.getElementById("input_4").value*1+document.getElementById("input_5").value*1);
document.getElementById("resultat").innerHTML=udregnet;}
</script>

<form method="POST" action="">
<input type="text" onChange="sum()" id="input_1" size="20">
<input type="text" onChange="sum()" id="input_2" size="20">
<input type="text" onChange="sum()" id="input_3" size="20">
<input type="text" onChange="sum()" id="input_4" size="20">
<input type="text" onChange="sum()" id="input_5" size="20">
</form>

<div id="resultat">Intet resultat endnu</div>
Avatar billede mclemens Nybegynder
05. marts 2006 - 19:52 #4
Ups:

<script>
function udregn(){
udregnet=(+document.getElementById("input_1").value*1+document.getElementById("input_2").value*1+document.getElementById("input_3").value*1+document.getElementById("input_4").value*1+document.getElementById("input_5").value*1);
document.getElementById("resultat").innerHTML=udregnet;}
</script>

<form method="POST" action="">
<input type="text" onChange="udregn()" id="input_1" size="20">
<input type="text" onChange="udregn()" id="input_2" size="20">
<input type="text" onChange="udregn()" id="input_3" size="20">
<input type="text" onChange="udregn()" id="input_4" size="20">
<input type="text" onChange="udregn()" id="input_5" size="20">
</form>

<div id="resultat">Intet resultat endnu</div>
Avatar billede mclemens Nybegynder
05. marts 2006 - 19:53 #5
... sæt id="resultat" på det felt der skal have resultatet ...
Avatar billede floetti Nybegynder
05. marts 2006 - 19:58 #6
ja, det var lige det mclemens. Giver du svar, så giver jeg points
Avatar billede mclemens Nybegynder
05. marts 2006 - 19:59 #7
svar ;)
Avatar billede dennism Nybegynder
05. marts 2006 - 20:19 #8
Hvad var der galt med min svar?
mclemens svarede præcis det samme som mig - og endda kan man se at han har brugt min vejledning, da han har kaldt med sum() men funktionen hedder udregn.
Avatar billede mclemens Nybegynder
05. marts 2006 - 21:06 #9
dennism> Jeg er ligeglad med de 15 point - men da floetti bad mig om at give et svar og da din løsning er ufuldstændig (ja, prøv den selv)... så valgte floetti at jeg kunne få pointene... Hvis floetti ombestemmer sig får du bare pointene.

- og endda kan man se at han har brugt min vejledning, da han har kaldt med sum() men funktionen hedder udregn.> skulle lige skrive nogle inputs og kom til at bruge dit tag for funktionen det er det eneste der er tilfælles. Din sammentælling virker heller ikke.

udregnet=(+document.getElementById("input_1").value*1+
er ikke ens med:
sum.value=voksen_1.value+

Hvor har du foresten dette:
document.getElementById("resultat").innerHTML=udregnet;}
<div id="resultat">Intet resultat endnu</div>
Avatar billede mclemens Nybegynder
05. marts 2006 - 21:16 #10
... Joh, ved nærmere eftertanke virker din vel også hvis der er et sum felt med id="sum" har lige oprettet en tråd med point til dig ;)
Avatar billede mclemens Nybegynder
05. marts 2006 - 21:19 #11
floetti, jeg vil dog anbefale du bruger min, da sammentællingen virker og getElementById("id"). er mere browser kompatibel end id.
Avatar billede mclemens Nybegynder
05. marts 2006 - 21:24 #12
P.s. hvis den skal ind i en input var min også lidt forkert :/
Skift da document.getElementById("resultat").innerHTML=udregnet;
over til document.getElementById("resultat").value=udregnet;
Avatar billede floetti Nybegynder
05. marts 2006 - 23:05 #13
Ja, det har jeg fundet ud af;)

Om det er i orden, så har jeg et relevant spørgsmål til dette. Nu har jeg lavet disse 5 inputs nedad, faktiskt 2 på hver linje (voksne og børn) x 5 nedad, så har jeg et input ud fra hver af linjerne hvor jeg tæller sammen for hver linje.

F.eks.

Voksne: 2 , Børn: 1 , Total: 3
Voksne: 1 , Børn: 1 , Total: 2
Voksne: 0 , Børn: 0 , Total: 0
Voksne: 0 , Børn: 2 , Total: 2
Voksne: 2 , Børn: 0 , Total: 2

Voksne: 5 , Børn: 4 , Total: x

Jeg har lavet Total inputtene readonly, og vil gerne have at der tælles sammen på Total nederst, men den vil ikke... kan jeg lægge id sammen for total voksne og total børn?

Håber du forstår...
Avatar billede mclemens Nybegynder
05. marts 2006 - 23:27 #14
<html><head>
<script>
function udregn(udr){
udregnet=0;udregnet2=0;
if(udr==0){udrs="voksen";udrs2="barn";}
else{udrs="barn";udrs2="voksen";}
for(mcx=1;mcx<6;mcx++){
  udregnet=udregnet+document.getElementById(udrs+mcx).value*1;
  udregnet2=udregnet2+document.getElementById(udrs2+mcx).value*1;
  document.getElementById("total"+mcx).value=document.getElementById(udrs+mcx).value*1+document.getElementById(udrs2+mcx).value*1}
document.getElementById(udrs+"6").value=udregnet;document.getElementById("total6").value=udregnet+udregnet2;
}
</script></head>

<body>
<form method="POST" action="">
<div style="width:200px;float:left;">
Voksne:<br />
<input type="text" onChange="udregn(0)" id="voksen1" size="20">
<input type="text" onChange="udregn(0)" id="voksen2" size="20">
<input type="text" onChange="udregn(0)" id="voksen3" size="20">
<input type="text" onChange="udregn(0)" id="voksen4" size="20">
<input type="text" onChange="udregn(0)" id="voksen5" size="20">
<input type="text" onChange="udregn(0)" id="voksen6" size="20">
</div>

<div style="width:200px;float:left;">
Børn:<br />
<input type="text" onChange="udregn(1)" id="barn1" size="20">
<input type="text" onChange="udregn(1)" id="barn2" size="20">
<input type="text" onChange="udregn(1)" id="barn3" size="20">
<input type="text" onChange="udregn(1)" id="barn4" size="20">
<input type="text" onChange="udregn(1)" id="barn5" size="20">
<input type="text" onChange="udregn(1)" id="barn6" size="20">
</div>

<div style="width:200px;float:left;">
Total:<br />
<input type="text" onChange="udregn(0)" id="total1" size="20">
<input type="text" onChange="udregn(0)" id="total2" size="20">
<input type="text" onChange="udregn(0)" id="total3" size="20">
<input type="text" onChange="udregn(0)" id="total4" size="20">
<input type="text" onChange="udregn(0)" id="total5" size="20">
<input type="text" onChange="udregn(0)" id="total6" size="20">
</div>
</form>
</body></html>
Avatar billede mclemens Nybegynder
05. marts 2006 - 23:38 #15
<script> -> <script language="javascript"> ... det smutter jo engang imellem :/
Avatar billede floetti Nybegynder
06. marts 2006 - 01:20 #16
Tusind tak mclemens, det virker fint... ;-)
Avatar billede mclemens Nybegynder
06. marts 2006 - 02:35 #17
Super ;)
Avatar billede mclemens Nybegynder
06. marts 2006 - 20:58 #18
Prøv at skifte onChange til onkeyup ;)
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