06. februar 2003 - 14:43
Der er
22 kommentarer og 2 løsninger
Finde antal felter og lave beregning
Hejsa Jeg søger en måde hvorpå jeg automatisk kan finde ud af hvor mange felter i min formular der hedder noget med "str" og bruge værdien i de felter til at lave en beregning på en endelig pris. Antallet af felter dannes dynamisk ud fra en SQL-sætning, men jeg navngiver felterne som str<%=rs(0)%>, hvor rs(0) er tabellens id-felt. Nogen der kan hjælpe med en god løsning? PS: Beregningen sker ud fra et klik på en knap af typen "BUTTON" og der må derfor gerne være et kald til funktionen.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
06. februar 2003 - 15:57
#1
'sgo: <script lang=javascript> function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) ) { sum += parseInt(coll.item(t).value); }; }; }; return sum; }; alert(Beregn()); </script>
06. februar 2003 - 16:19
#2
Og hvordan får jeg det skrevet i et felt der hedder "pris"? Og hvordan kalder jeg det med en knap af typen "BUTTON"?
06. februar 2003 - 17:57
#3
function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) ) { sum += parseInt(coll.item(t).value); } } } document.formnavn.pris.value = sum; } <input type=button onClick="Beregn();">
07. februar 2003 - 07:41
#4
Hvordan ganger jeg det med en pris der også trækkes dynamisk ud fra en tabel?
07. februar 2003 - 07:42
#5
Kan det ikke også laves så den opfatter tomme felter som værdien "0"?
07. februar 2003 - 08:46
#6
Kan det evt. ændres så udregningen sker automatisk efterhånden som man indtastet antal i felterne?
07. februar 2003 - 09:42
#7
hvis udregningen skal ske automatisk skal du indsætte følgende i hver <input>: onChange="Beregn();"
07. februar 2003 - 09:47
#8
Okay - men hvad så med at gange det indtastede antal med en pris hentet fra databasen og tomme felter som værdien "0"?
07. februar 2003 - 09:50
#9
function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) ) { sum += parseInt(coll.item(t).value); } else { sum = 0; } } } document.formnavn.pris.value = sum; }
07. februar 2003 - 09:57
#10
Nope - den melder stadig "NaN" i feltet pris hvis kun ét af felterne til antal er udfyldt!
07. februar 2003 - 10:06
#11
Det er nok fordi den ikke kan acceptere kommatal. Prøv lige en gang med et heltal.
07. februar 2003 - 10:10
#12
Der står ingen kommatal - felterne der skal udfyldes er til antal stk. af en bestemt vare - og det er ikke kommatal.
07. februar 2003 - 10:11
#13
Men hvis jeg sætter en default value i de felter til antal, så virker det - men det er ikke meningen der skal stå noget i dem!
07. februar 2003 - 10:14
#14
Så må dette virke: function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) && !(coll.item(t).value = "") ) { sum += parseInt(coll.item(t).value); } else { sum = 0; } } } document.formnavn.pris.value = sum; }
07. februar 2003 - 10:15
#15
Der er en fejl i "else"-delen af if-sætningen. Det er hermed rettet: function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) && !(coll.item(t).value = "") ) { sum += parseInt(coll.item(t).value); } } } document.formnavn.pris.value = sum; }
07. februar 2003 - 10:27
#16
Med det sidste script fjerner den den indtastning jeg laver i antal-felterne!?
07. februar 2003 - 10:44
#17
Hedder alle dine felter nogen med "pris" - i så fald vil "document.formnavn.pris.value" operere på dem alle.
07. februar 2003 - 10:45
#18
Eller rettere: Hvis de specifikt hedder "pris".
07. februar 2003 - 10:47
#19
Nej - jeg har ét felt der hedder pris - indtastningsfelterne hedder alle noget med str efterfulgt at et nummer
07. februar 2003 - 10:49
#20
UPS!!! Man skal huske at benytte == i stedet for = hvis man vil sammenligne: function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) && !(coll.item(t).value == "") ) { sum += parseInt(coll.item(t).value); } } } document.formnavn.pris.value = sum; }
07. februar 2003 - 10:51
#21
Okay - det virkede bedre. Hvordan ganger jeg det så med en værdi jeg har i et HIDDEN felt? Den værdi kan godt være et kommatal!?
07. februar 2003 - 11:06
#22
Fandt selv ud af den sidste - bortset fra at den ikke vil acceptere kommatal, hvilket den skal. Har nu følgende script: function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; var pris = document.form2.engros.value; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) && !(coll.item(t).value == "") ) { sum += parseInt((coll.item(t).value)*pris); } } } document.form2.pris.value = sum; }
07. februar 2003 - 11:42
#23
Må jeg foreslå: function Beregn() { var coll = document.getElementsByTagName("input"); var sum = 0; var pris = document.form2.engros.value; for( var t=0; t < coll.length; t++) { if( coll.item(t).name.substring(0,3) == "str" ) { if( !isNaN(coll.item(t).value) && !(coll.item(t).value == "") ) { sum += parseInt(coll.item(t).value); } } } document.form2.pris.value = sum * pris.replace(/,/g,"."); }
07. februar 2003 - 11:48
#24
Thanx - that does the trick
Vi tilbyder markedets bedste kurser inden for webudvikling