11. november 2005 - 14:18
Der er
13 kommentarer
Beregning af pris ufra to varianble
Jeg er ved at lave en shop, hvor man skal kunne bestille nogle varer på mål. Målene er så afgørende for prisen. Altså har jeg brug for et script som kan finde en pris udfra to variable. Eks. Kunden indtaster 101 cm bred og 54 cm høj. Bredde 61-100, højde 0-100, kr 149,- Bredde 61-100, højde 101-150, kr 199,- osv.... mmark
Annonceindlæg fra Infor
11. november 2005 - 14:21
#1
Det lyder som om du har behov for en matrix, hvor de forskellige grupper er repræsenteret. Denne matrix slår du du op i alt efter variabelværdierne...
11. november 2005 - 14:22
#2
Det lyder meget rigtigt, men hvordan ser det ud?
11. november 2005 - 14:43
#3
Det er godt nok en knoldsparker metode, men et forslag kunne være: var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]]; var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]]; var arrPriser = [[20,30,40,50,60,70,80], [25,35,45,55,65,75,85], [30,40,50,60,70,80,90], [35,45,55,65,75,85,95], [40,50,60,70,80,90,100], [45,55,65,75,85,95,105]]; function hentPris(hoejde,bredde) { for(var i = 0; i < arrHoejde.length; i++) { if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) { idxHoejde = i; break; } } for(var i = 0; i < arrBredde.length; i++) { if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) { idxBredde = i; break; } } var pris = 0; if(idxHoejde && idxBredde) { pris = arrPriser[idxBredde][idxHoejde]; } return pris; } NB: Det er ikke testet... :(
11. november 2005 - 15:47
#4
<HTML> <HEAD> <TITLE> beregning </TITLE> </HEAD> <body> <SCRIPT language=JavaScript> <!-- function CheckForm( beregning ) { var bMissingFields = false; var ForStor = false; var strFields = ""; if( beregning.QUANTITY.value < 1 || isNaN(beregning.QUANTITY.value)) { bMissingFields = true; strFields += " * Antal\n"; } if( beregning.Bredde.value < 1 || isNaN(beregning.Bredde.value)) { bMissingFields = true; strFields += " * Bredde\n"; } if( beregning.Hoejde.value < 1 || isNaN(beregning.Hoejde.value)) { bMissingFields = true; strFields += " * Højde\n"; } if( theform.BREDDE.value > 300) { ForStor = true; } if( beregning.Hoejde.value > 300) { ForStor = true; } if( bMissingFields ) { alert( "Der mangler desværre nogle informationer. Tjek venligst følgende indtastning(er) før du fortsætter.\n\n" + strFields +"\nDin bestilling kan ikke godtages, før du har udfyldt felterne." ); return false; } if( ForStor ) { alert( "må ikke overstige 300x300 cm."); return false; } return true; } // --> </SCRIPT> <SCRIPT language=JavaScript> function beregn() if{ var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]]; var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]]; var arrPriser = [[20,30,40,50,60,70,80], [25,35,45,55,65,75,85], [30,40,50,60,70,80,90], [35,45,55,65,75,85,95], [40,50,60,70,80,90,100], [45,55,65,75,85,95,105]]; function hentPris(hoejde,bredde) { for(var i = 0; i < arrHoejde.length; i++) { if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) { idxHoejde = i; break; } } for(var i = 0; i < arrBredde.length; i++) { if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) { idxBredde = i; break; } } var pris = 0; if(idxHoejde && idxBredde) { pris = arrPriser[idxBredde][idxHoejde]; } } return pris; } </script> <TABLE cellSpacing=4 cellPadding=0 border=0> <TBODY> <TR> <TD vAlign=top> <FORM name=beregning onsubmit="if( CheckForm(this)) {return true;} else { return false; }" action=index2.html method=post><INPUT type=hidden value=1 name=menu> <B>Indtast antal:</B> <INPUT maxLength=2 size=2 value=1 name=QUANTITY> <P><B>Bredde:</B> <INPUT size=5 name=Bredde> cm. <P><B>Højde:</B> <INPUT size=5 name=hoejde> cm. <P><INPUT type=submit value=Bestil name=tilret> </P></TD> </TR> </TABLE></FORM> </body> </html>
11. november 2005 - 15:48
#5
Hvad er galt i ovenstående?
11. november 2005 - 15:57
#6
Du mangler en { efter function beregn()...
11. november 2005 - 15:57
#7
altså function beregn() { i stedet for function beregn()
11. november 2005 - 16:00
#8
På den anden side... ved nærmere eftersyn så skal denne script-sektion <SCRIPT language=JavaScript> function beregn() { if{ var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]]; var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]]; var arrPriser = [[20,30,40,50,60,70,80], [25,35,45,55,65,75,85], [30,40,50,60,70,80,90], [35,45,55,65,75,85,95], [40,50,60,70,80,90,100], [45,55,65,75,85,95,105]]; function hentPris(hoejde,bredde) { for(var i = 0; i < arrHoejde.length; i++) { if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) { idxHoejde = i; break; } } for(var i = 0; i < arrBredde.length; i++) { if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) { idxBredde = i; break; } } var pris = 0; if(idxHoejde && idxBredde) { pris = arrPriser[idxBredde][idxHoejde]; } } return pris; } </script> nok ændres til dette: <SCRIPT type="text/JavaScript"> var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]]; var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]]; var arrPriser = [[20,30,40,50,60,70,80], [25,35,45,55,65,75,85], [30,40,50,60,70,80,90], [35,45,55,65,75,85,95], [40,50,60,70,80,90,100], [45,55,65,75,85,95,105]]; function hentPris(hoejde,bredde) { for(var i = 0; i < arrHoejde.length; i++) { if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) { idxHoejde = i; break; } } for(var i = 0; i < arrBredde.length; i++) { if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) { idxBredde = i; break; } } var pris = 0; if(idxHoejde && idxBredde) { pris = arrPriser[idxBredde][idxHoejde]; } return pris; } </script>
11. november 2005 - 16:10
#9
Well, der var faktisk flere ting galt, dem har jeg rettet i nedenstående udgave. Derudover kan jeg ikke se at funktionen hentPris bliver kaldt nogen steder, så det er du lige nød til at redegøre for hvor skal ske... <HTML> <HEAD> <TITLE> beregning </TITLE> </HEAD> <body> <SCRIPT language=JavaScript> <!-- function CheckForm( beregning ) { var bMissingFields = false; var ForStor = false; var strFields = ""; if( beregning.QUANTITY.value < 1 || isNaN(beregning.QUANTITY.value)) { bMissingFields = true; strFields += " * Antal\n"; } if( beregning.Bredde.value < 1 || isNaN(beregning.Bredde.value)) { bMissingFields = true; strFields += " * Bredde\n"; } if( beregning.Hoejde.value < 1 || isNaN(beregning.Hoejde.value)) { bMissingFields = true; strFields += " * Højde\n"; } if( beregning.Bredde.value > 300) { ForStor = true; } if( beregning.Hoejde.value > 300) { ForStor = true; } if( bMissingFields ) { alert( "Der mangler desværre nogle informationer. Tjek venligst følgende indtastning(er) før du fortsætter.\n\n" + strFields +"\nDin bestilling kan ikke godtages, før du har udfyldt felterne." ); return false; } if( ForStor ) { alert( "må ikke overstige 300x300 cm."); return false; } return true; } // --> </SCRIPT> <SCRIPT type="text/JavaScript"> var arrHoejde = [[0,10],[11,30],[31,70],[71,110],[111,140],[141,170],[171,210]]; var arrBredde = [[0,30],[31,70],[71,120],[121,150],[151,190],[191,250]]; var arrPriser = [[20,30,40,50,60,70,80], [25,35,45,55,65,75,85], [30,40,50,60,70,80,90], [35,45,55,65,75,85,95], [40,50,60,70,80,90,100], [45,55,65,75,85,95,105]]; function hentPris(hoejde,bredde) { for(var i = 0; i < arrHoejde.length; i++) { if(arrHoejde[i][0] <= hoejde && arrHoejde[i][1] >= hoejde) { idxHoejde = i; break; } } for(var i = 0; i < arrBredde.length; i++) { if(arrBredde[i][0] <= bredde && arrBredde[i][1] >= bredde) { idxBredde = i; break; } } var pris = 0; if(idxHoejde && idxBredde) { pris = arrPriser[idxBredde][idxHoejde]; } return pris; } </script> <TABLE cellSpacing=4 cellPadding=0 border=0> <TBODY> <TR> <TD vAlign=top> <FORM name=beregning onsubmit="if( CheckForm(this)) {return true;} else { return false; }" action="index2.html" method=post> <INPUT type=hidden value=1 name=menu> <B>Indtast antal:</B> <INPUT maxLength=2 size=2 value=1 name=QUANTITY> <P><B>Bredde:</B> <INPUT size=5 name=Bredde> cm. <P><B>Højde:</B> <INPUT size=5 name=Hoejde> cm. <P><INPUT type=submit value=Bestil name=tilret> </P> </FORM></TD> </TR> </TBODY> </TABLE> </body> </html>
11. november 2005 - 16:15
#10
Jeg har (af ren nysgerrighed) prøvet at udvide formularen på siden så den ser således ud (og dermed kalder funktionen hentPris), for at se hvad resultatet bliver... <TABLE cellSpacing=4 cellPadding=0 border=0> <TBODY> <TR> <TD vAlign=top> <FORM name=beregning onsubmit="if( CheckForm(this)) {return true;} else { return false; }" action="index2.html" method=post> <INPUT type=hidden value=1 name=menu> <B>Indtast antal:</B> <INPUT maxLength=2 size=2 value=1 name=QUANTITY> <P><B>Bredde:</B> <INPUT size=5 name=Bredde> cm. <P><B>Højde:</B> <INPUT size=5 name=Hoejde> cm. <P><B>Pris:</B> <INPUT size=5 name=Prisen onfocus="this.value = hentPris(this.form.Hoejde.value, this.form.Bredde.value)"> kr. <P><INPUT type=submit value=Bestil name=tilret> </P> </FORM></TD> </TR> </TBODY> </TABLE>
11. november 2005 - 18:09
#11
Takker for hjælpen
11. november 2005 - 20:24
#12
Velbekomme :)
05. marts 2007 - 13:57
#13
Det er vist tid til at afregne :)
Vi tilbyder markedets bedste kurser inden for webudvikling