Avatar billede ulfhedne Nybegynder
25. juli 2004 - 09:06 Der er 10 kommentarer og
1 løsning

Tilføjelse til roenving script

Se: http://www.eksperten.dk/spm/520215

Jeg vil gerne om man kunne lave et eller andet, som også kunne udregne den samlede porto.

Måske man kan give hver enkelt artikel en "gram" vægt og så udregne dette i en subtotal. Hvis det samlede antal gram vægt er under f.eks. 500 gram så er prisen kr. 10,-. Hvis det så er mellem 500 gram - 1 kg, så er det kr. 20,- ...
Avatar billede roenving Novice
25. juli 2004 - 09:32 #1
function udregnpris(f){
  pris = 0,p;
  vaegt = 0,v;
  e = f.elements;
  for (i = 0;f.length > i; i++){
    if(e[i].tagName=='INPUT'&&e[i].name.indexOf("antal")>-1 && /^[\d\.]+$/.test(e[i].value)){
      p = f.elements[e[i].name.replace(/antal/,"pris")];
      if(p && /^[\d\.]+$/.test(p.value)){
        pris += +e[i].value * +p.value;
      }
      v = f.elements[e[i].name.replace(/antal/,"vaegt")];
      if(v && /^[\d\.]+$/.test(v.value)){
        vaegt += +e[i].value * +v.value;
      }
    }
    if(vaegt<500)pris += 10;
    else if(vaegt<1000)pris += 20;
    else if(vaegt<5000)pris += 50;
    else pris += 100;
  }
  f.total.value = pris;
}

-- du kan jo selv udvide mere !-)
Avatar billede roenving Novice
25. juli 2004 - 09:34 #2
Og der skal selvfølgelig stå var i de to første linjer:

  var pris = 0,p;
  var vaegt = 0,v;
Avatar billede roenving Novice
25. juli 2004 - 09:36 #3
-- og forøvrigt har du ramt den mest sikre måde til at forhindre, at jeg får mails:
Du har brugt mit brugernavn i spørgsmåls-titlen, hvilket 100% sikrer, at der ikke sendes mails til mig !-)
Avatar billede ulfhedne Nybegynder
25. juli 2004 - 09:53 #4
Okay, det var da en sjov feature - beklager. :o)

Så har jeg følgende med det nye du har lavet:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bestillingsform</title>
<script type="text/javascript">
<!--
function udregnpris(f){
  var pris = 0,p;
  var vaegt = 0,v;
  e = f.elements;
  for (i = 0;f.length > i; i++){
    if(e[i].tagName=='INPUT'&&e[i].name.indexOf("antal")>-1 && /^[\d\.]+$/.test(e[i].value)){
      p = f.elements[e[i].name.replace(/antal/,"pris")];
      if(p && /^[\d\.]+$/.test(p.value)){
        pris += +e[i].value * +p.value;
      }
      v = f.elements[e[i].name.replace(/antal/,"vaegt")];
      if(v && /^[\d\.]+$/.test(v.value)){
        vaegt += +e[i].value * +v.value;
      }
    }
    if(vaegt<500)pris += 10;
    else if(vaegt<1000)pris += 20;
    else if(vaegt<5000)pris += 50;
    else pris += 100;
  }
  f.total.value = pris;
}
// -->
</script>
</head>
<body>

<form name="form1" onsubmit="udregnpris(this);">

<table border="1">
<tr>
  <td>Antal</td>
  <td>Titel</td>
  <td>Pris</td>
</tr>
<tr>
  <td><input type="text" value="0" name="antalperler" onchange="udregnpris(this.form)"></td>
  <td>Bestil perler her</td>
  <td align="right" width="50">148,-<input type="hidden" name="prisperler" value=148></td>
</tr>
<tr>
  <td><input type="text" value="0" name="antaljulegave" onchange="udregnpris(this.form)"></td>
  <td>Julegave tips</td>
  <td align="right" width="50">32,-<input type="hidden" name="prisjulegave" value="32"></td>
</tr>
</table>

<br>
Total: <input type="text" name="total" size="15">
<br><br><input type="submit" value="Send bestilling">
</form>
</body>
</html>

Hvis jeg blot vælger 1 stk i den første lægger den 60,- hvor kommer du fra? Skal jeg ikke lægge noget ind i på de enkelte inputs?

Måske man kunne lave en "subtotal" som kun udregner selve prisen på varene uden porto? Og så derunder have en "Porto" som udregner dette og til sidst en "Total" som lægger de to tal sammen?
Avatar billede roenving Novice
25. juli 2004 - 10:02 #5
Jeg havde fået smidt porto-udregningen inde i løkken, så den blev gentaget, hvilket selvsagt ikke er heldigt ...

Men er det sådan ?-)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Bestillingsform</title>
<script type="text/javascript">
<!--
function udregnpris(f){
  var pris = pto = 0,p;
  var vaegt = 0,v;
  e = f.elements;
  for (i = 0;f.length > i; i++){
    if(e[i].tagName=='INPUT'&&e[i].name.indexOf("antal")>-1 && /^[\d\.]+$/.test(e[i].value)){
      p = f.elements[e[i].name.replace(/antal/,"pris")];
      if(p && /^[\d\.]+$/.test(p.value)){
        pris += +e[i].value * +p.value;
      }
      v = f.elements[e[i].name.replace(/antal/,"vaegt")];
      if(v && /^[\d\.]+$/.test(v.value)){
        vaegt += +e[i].value * +v.value;
      }
    }
  }
  if(vaegt<500)pto = 10;
  else if(vaegt<1000)pto = 20;
  else if(vaegt<5000)pto = 50;
  else pto = 100;
  f.porto.value = pto;
  f.total.value = pris;
  f.ialt.value = pris + pto;
}
// -->
</script>
</head>
<body>

<form name="form1" onsubmit="udregnpris(this);">

<table border="1">
<tr>
  <td>Antal</td>
  <td>Titel</td>
  <td>Pris</td>
</tr>
<tr>
  <td><input type="text" value="0" name="antalperler" onchange="udregnpris(this.form)"><input type="hidden" name="vaegtperler" value="450"></td>
  <td>Bestil perler her</td>
  <td align="right" width="50">148,-<input type="hidden" name="prisperler" value=148></td>
</tr>
<tr>
  <td><input type="text" value="0" name="antaljulegave" onchange="udregnpris(this.form)"><input type="hidden" name="vaegtjulegave" value="150"></td>
  <td>Julegave tips</td>
  <td align="right" width="50">32,-<input type="hidden" name="prisjulegave" value="32"></td>
</tr>
</table>

<br>
Total: <input type="text" name="total" size="15">
<br>Porto: <input type="text" name="porto" size="15">
<br>Ialt: <input type="text" name="ialt" size="15">
<br><br><input type="submit" value="Send bestilling">
</form>
</body>
</html>
Avatar billede ulfhedne Nybegynder
25. juli 2004 - 10:10 #6
Det er helt kanon! Kan man evt. undgå hvis man nulstiller formen at den bibeholder de kr. 10 i porto?
Avatar billede roenving Novice
25. juli 2004 - 10:12 #7
if(vaegt==0)pto = 0;
  else if(vaegt<500)pto = 10;
  else if(vaegt<1000)pto = 20;
  else if(vaegt<5000)pto = 50;
  else pto = 100;
Avatar billede ulfhedne Nybegynder
25. juli 2004 - 10:20 #8
Perfekt - mange tak for den store hjælp!

Læg et svar! :o)
Avatar billede roenving Novice
25. juli 2004 - 10:22 #9
Velbekomme '-)
Avatar billede ulfhedne Nybegynder
25. juli 2004 - 10:25 #10
Tak!
Avatar billede roenving Novice
25. juli 2004 - 10:28 #11
-- og tak for point ;~}
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