Avatar billede kiara Nybegynder
06. juni 2002 - 09:45 Der er 19 kommentarer og
1 løsning

Udregning i javascript

Jeg har nogle ting der skal regnes ud, i henhold til hvor mange penge den enkelte vare koster.

Hvis nu jeg tager to ting som eksempel. Man kan købe en bold og et legehus. Der skal så være en form hvor man kan skrive det antal bolde eller legehuse man ønsker og nederst skal der så være en sammentælling af de varer man har bestilt. Hvordan klares dette lettest? (Der er i alt 10 varer).
Avatar billede delwin Nybegynder
06. juni 2002 - 09:57 #1
hvordan har du priserne stående..?
Avatar billede kiara Nybegynder
06. juni 2002 - 10:05 #2
Jeg havde forstillet mig at det skulle står ganske simpelt

Bold  12,00kr og så et felt hvor man indtaster antallet af bolde
Legehus 125,00kr og igen et felt.

Ialt  og igen et felt med det samlede beløb
Avatar billede delwin Nybegynder
06. juni 2002 - 10:07 #3
og du har kun 10 varer.. som er faste..??
Avatar billede kiara Nybegynder
06. juni 2002 - 10:09 #4
Hmm nej efter nærmere tælling er det faktisk 15.
Avatar billede skovenborg Nybegynder
06. juni 2002 - 12:20 #5
Kan det her bruges (du bliver nok nød til at lave nogle flere else if hvis du skal have flere varer. Dette script er blot lavet ud fra dit eksempel):
<html>
<head>
<script language="javascript">
  antal = 0;
  ialt = 0;
  function udregn(navn,pris)
  {
  if (navn == "b")
  {
    antal = parseInt(document.form1.bold.value);
    ialt = antal * pris;
  }
  else if (navn == "h")
  {
    antal = parseInt(document.form1.hus.value);
    ialt = antal * pris;
  }
  else;
  document.form1.sum.value = ialt;
  if (document.form1.sum.value == "NaN") document.form1.sum.value = "";
  }
</script>
</head>
<body>
<form name="form1">
Bold: <input type="text" name="bold" onKeyUp="udregn('b',12);"><br>
Legehus: <input type="text" name="hus" onKeyUp="udregn('h',125);"><br>
I Alt: <input type="text" name="sum">
</form>
</body>
</html>
Avatar billede kiara Nybegynder
06. juni 2002 - 12:31 #6
Jo det ser fint ud men man skal have mulighed for at bestille både bold og hus og så se den samlede pris. Her slettes prisen for de bolde man har tastet ind og erstattes af prisen på legehus når man indtaster disse
Avatar billede kiara Nybegynder
06. juni 2002 - 12:54 #7
Det skal måske også lige nævnes at bestillingen skal sendes til en emailadresse. Leveringssted (Nanv, adresse, by og telefonnummer)skal der derfor også være en form til.
Avatar billede Slettet bruger
06. juni 2002 - 15:33 #8
Designmæssigt er det selvfølgelig noget bæ, men den side af sagen klarer du nok selv:

<html>
<head>
<title>Bestillingsformular</title>
<script>
ialtpris = 0;

function tjek(obj, pris) {
if (obj.checked)
ialtpris += pris;
else
ialtpris -= pris;
obj.form.ialt.value = ialtpris + " kr.";
}
</script>
</head>
<body>
<h1>Katalog:</h1>
<form action="java script:alert('Aaaaaaaaaaaargh!');">
<input type="checkbox" value="Ja" name="Legehus" onClick="tjek(this, 259);"> <b>Legehus</b> 259,-<br>
<input type="checkbox" value="Ja" name="Bold" onClick="tjek(this, 69);"> <b>Bold</b> 69,-<br>
<input type="checkbox" value="Ja" name="Mejetærsker" onClick="tjek(this, 365999);"> <b>Mejetærsker</b> 365999,-<br>
<input type="checkbox" value="Ja" name="Hitler" onClick="tjek(this, 15);"> <b>Hitler's overskæg</b> 15,-<br><br>
<b><i>I alt:</i></b> <input type="text" value="0 kr." name="ialt" readonly><br><br>
<h3>Personlige oplysninger:</h3>
<b>Navn:</b> <input type="text" value="" name="navn"><br>
<b>Adresse:</b> <input type="text" value="" name="adresse"><br>
<b>Postnummer + by:</b> <input type="text" value="" name="by"><br>
<b>E-mail:</b> <input type="text" value="" name="email"><br>
<b>Favorit til at vinde VM 2002:</b> <input type="text" value="DANMARK!" name="favorit" readonly><br><br>
<input type="submit" value="Bestil!">
</form>
</body>
</html>
Avatar billede Slettet bruger
06. juni 2002 - 15:33 #9
Hovsa, jeg har vist misforstået det lidt! 2 sek...
Avatar billede Slettet bruger
06. juni 2002 - 15:42 #10
Nej, det bliver sgu en anden dag... Har ikke lige tid nu!
Avatar billede skovenborg Nybegynder
07. juni 2002 - 09:39 #11
Prøv den her:
<html>
<head>
<script language="javascript">
  var antal = 0;
  var antal2 = 0;
  var ialt = 0;
  var ialt2 = 0;
  var prisialt = 0;
  function udregn(navn,pris)
  {
  antal = parseInt(document.form1.bold.value);
  if (antal > 0) ialt = antal * 12;
  else ialt = 0;
  antal2 = parseInt(document.form1.hus.value);
  if (antal2 > 0) ialt2 = antal2 * 125;
  else ialt2 = 0;
  document.form1.sum.value = ialt + ialt2;
  if (document.form1.sum.value == "NaN") document.form1.sum.value = "";
  }
</script>
</head>
<body>
<form name="form1" method="post" action="mailto:dinmail@noget.fisk">
  <b>Bold:</b>&nbsp;&nbsp;&nbsp; <input type="text" name="bold" onKeyUp="udregn();" value=0 onFocus="this.value = '';"><br>
  <b>Legehus:</b> <input type="text" name="hus" onKeyUp="udregn();" value=0 onFocus="this.value = '';"><br>
  <b>I Alt:</b> <input type="text" name="sum" value=0>
  <br>
  <b>Navn:</b> <input type="text" value="" name="navn"><br>
  <b>Adresse:</b> <input type="text" value="" name="adresse"><br>
  <b>Postnummer + by:</b> <input type="text" value="" name="by"><br>
  <b>E-mail:</b> <input type="text" value="" name="email"><br>
  <input type="submit" value="Bestil">
</form>
</body>
</html>
Avatar billede skovenborg Nybegynder
07. juni 2002 - 09:44 #12
Du kan jo altid lave lidt andet layout på den, men hvis du vil have flere skal du bare huske at lave en onKeyUp="udregn();" samt lave nogle flere variabler. Fx hvis du vil have produktet laks med, skal du tilføje:
<b>Laks:</b><input type="text" name="laks" onKeyUp="udregn();" value=0 onFocus="this.value = '';"><br>
og i <script>:
var antal3 = 0;
var ialt3 = 0;
function udregn()
{
//tilføj følgende:
  antal3 = parseInt(document.form1.laks.value);
  if (antal > 0) ialt3 = antal3 * 70; //70 er prisen for laks
  else ialt3 = 0;
  // og længere nede:
  document.form1.sum.value = ialt + ialt2 + ialt3;
}
Bøvet, men det skulle virke :-)
Avatar billede kiara Nybegynder
07. juni 2002 - 10:14 #13
Tager jeg fejl hvis det i stedet skal hedde:

antal3 = parseInt(document.form1.laks.value);
if (antal3 > 0) ialt3 = antal3 * 70;
//her havde du ikke skrevet et tretal efter antal
else ialt3 = 0;
Avatar billede skovenborg Nybegynder
07. juni 2002 - 15:51 #14
Jo, min fejl. Virker scriptet rigtigt nu?
Avatar billede o-zone Nybegynder
07. juni 2002 - 21:40 #15
Hvis det ikke er for sent nu, hvad så med denneher? :
---8<----------
<html>
<body>
<script language="javascript">
    //Disse to arrays er de eneste der skal ajourføres ved nye priser/varer
    var vareArray=["legehus","badebold","mejetærsker","hitler"];
    var prisArray=[259,69,365999,15.95];
</script>
<center>
<h1>Blabla bla</h1>
<table border=0 cellspacing=0 cellpadding=3>
<form name="listeForm">

<script language="javascript">
    var i=0;
    while(i<vareArray.length)
    {
        document.write("<tr><td><input type='checkbox' name='"+vareArray[i]+"' onClick='checkSamletPris(); return true;'></td><td><b>"+vareArray[i]+"</b></td><td> a DKr. </td><td align=right>"+prisArray[i]+"</td><td>antal: <input type='text' size='5' value='1' name='antal_"+vareArray[i]+"' onChange='checkSamletPris(); return true;'></td></tr>\n");
        i++;
    }
</script>
</table>
<br>
i alt: <input type="text" name="ialt" size=15 value=0 readonly=true>

<script language="javascript">
    function checkSamletPris()
    {
        var samletPris = 0;
        var i=0;
        while(i<vareArray.length)
        {
            if (document.listeForm.elements[i*2].checked)
                samletPris += (document.listeForm.elements[(i*2)+1].value)*prisArray[i];
            i++;
        }
        document.listeForm.ialt.value = samletPris;
    }
</script>
<br><br><hr width="300"><br>
<table border=0 cellspacing=0 cellpadding=3>
    <tr><td>Navn:</td><td><input type="text" size="50"></td></tr>
    <tr><td>Adresse:</td><td><input type="text" size="50"></td></tr>
    <tr><td>By:</td><td><input type="text" size="30"></td></tr>
    <tr><td>Tlf:</td><td><input type="text" size="15"></td></tr>
</center>
</body>
</html>
---8<----------

Jeg kunne egentlig godt tænke mig at høre, hvad I (andre?) hajer synes om den!
Som jeg ser det, er det en stor fordel at opdateringer af varer og priser udelukkende sker i to linier (burde måske have været lavet i een, så man er sikker på ikke at bytte priser og varer rundt).

Til gengæld er det måske for skrøbeligt udelukkende at overlade sig på form.elements[index] til at finde de rigtige varer og priser frem? Jeg mener: hvis man pludselig skal indsætte et hidden field i starten af formen, skal man huske at opdatere javascriptet (eller huske at tilføje det i slutningen af formen i stedet!)

Alternativt kunne man selvfølgelig lave et navngivent felt lige inden de javascript genererede felter, og så ud fra dens index finde de andre felter :)

Hvad siger I?
Avatar billede o-zone Nybegynder
07. juni 2002 - 21:53 #16
He he he - var det ikke 14% af alle webbutikkerne Jakob Nielsen undersøgte for et års tid siden, der havde lavet samme fejl som jeg: Glemt send/køb knappen :)

Der skal selvfølgelig bare tilføjes en
<input type=reset value=slet> og en <input type=submit value=køb>-tingy i slutningen af formen.

I øvrigt kiara, så er det nødvendigt med en serverside ting for at sende mails, så det er ikke noget du skruer sammen i javascript. Det er meget sandsynligt at dit webhotel har noget liggende, som du må bruge, men den eksakte syntax for det afhænger af hvordan serverside scriptet er lavet.
(-:H@zze
Avatar billede skovenborg Nybegynder
08. juni 2002 - 13:05 #17
o-zone >> Den ser da meget fin, men når man vælger fx legehus (checkboxen) og så skriver hvor mange der skal være opdateres den ikke. Men ellers ser den fin ud og let at opdatere :)
Avatar billede o-zone Nybegynder
08. juni 2002 - 20:50 #18
skovenborg>> hmmm ... det gør den, når du skal sende formen. Jeg bruger onChange til at opdatere, og den fanger først ændringen, når man fjerner sig fra feltet!
Men du har da ret - det kunne vildlede kunder til at tro at deres varer kostede mindre :-(
Avatar billede skovenborg Nybegynder
09. juni 2002 - 16:13 #19
o-zone>> Det kan man jo altid lave om på med et par if else kommandoer.
kiara>> Kan du bruge nogen af koderne?
Avatar billede kiara Nybegynder
10. juni 2002 - 08:18 #20
Tusind tak for hjælpen til jer. Jeg har i første omgang brugt din, Skovenborg, men jeg vil da også forsøge mig med din o-zone, på et eller andet tidspunkt. Jo flere ting jeg prøver, jo klogere biver jeg :-)
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