Avatar billede g0t Nybegynder
04. april 2008 - 00:11 Der er 20 kommentarer og
1 løsning

Javascript udregner

Hey.

Jeg skal ha bikset noget javascript sammen som udregner en pris efter nogle valgte ting i en form.

Fx 5 inputs og så skal de vise den samlede pris for neden.

Håber nogle kan hjælpe. Vil være en stor hjælp da jeg ikke er så skarp i javascript.

Venlig hilsen
Troels
Avatar billede soerenlyn Nybegynder
04. april 2008 - 09:40 #1
Skal det ske når man trykker på en knap eller hvornår? Du kunne gøre noget i retningen af dette:

<script type="text/javascript">
function calculateResult(){
    var prize = document.getElementById("prize1");
    prize += document.getElementById("prize2");
    prize += document.getElementById("prize3");
    prize += document.getElementById("prize4");

    document.getElementById("results").value = prize;
}
</script>

<input type="text" id="prize1">
<input type="text" id="prize2">
<input type="text" id="prize3">
<input type="text" id="prize4">

<input type="button" onclick="calculateResult();">
<input type="text" id="result">
Avatar billede g0t Nybegynder
04. april 2008 - 09:59 #2
Det ser rigtigt ud. Leger lige lidt med det og kommer tilbage igen.
Avatar billede g0t Nybegynder
04. april 2008 - 10:05 #3
Det er ikke ud til den virker. :( skal alle prizes ikke defneres som Var's i funktionen?
Avatar billede soerenlyn Nybegynder
04. april 2008 - 10:12 #4
Nej, for det er den samme pris som vi bliver ved med at lægge resultatet op i. Jeg har brug for lidt mere kode før jeg kan hjælpe dig..

Jeg skal lige ind og aflevere et eksamens-projekt på mit universistet, men jeg kan godt hjælpe dig igen senere :) Hvis ikke nogen andre når det først ...
Avatar billede jkampmann Nybegynder
04. april 2008 - 10:16 #5
function calculateResult(){
    var prize = parseInt(document.getElementById("prize1").value + document.getElementById("prize2").value + document.getElementById("prize3").value; + document.getElementById("prize4").value);

    document.getElementById("results").value = prize;
}
Avatar billede g0t Nybegynder
04. april 2008 - 10:27 #6
Nope virker stadig ikke.

Det er hvad vi har nu.

<html>
<head>
<title>Dynasti Rejser - Kina rejser</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
function calculateResult(){
    var prize = parseInt(document.getElementById("prize1").value +
        document.getElementById("prize2").value +
        document.getElementById("prize3").value; +
        document.getElementById("prize4").value);

    document.getElementById("results").value = prize;
}
</script>
</head>
<body>
<div id="ramme">

<div id="top">
<div id="logo">Logo</div>
<div id="flashkort">Flash</div>
</div>

<div id="menu">Menu</div>

<div id="indhold">
<div id="left">
<select type="text" id="prize1">
<option value="11000">Beijing</option>
<option value="12000">Shainghai</option>
<option value="13000">Kinaby</option>
<option value="14000">Lollerkina</option>
<option value="15000">fillijonggonggong</option>
</select>
<br />
Antal personer (over 11)<br />
<input type="text" id="prize2"><br />
Antal børn (under 11)<br />
<input type="text" id="prize3"><br />
Rejsetype<br />
<select type="text" id="prize4">
<option value="10000">1. Standard rejse</option>
<option value="14000">2. Kysttogt</option>
<option value="12000">3. Skrædersyget rejse</option>
</select>

<input type="button" value="Udregn Pris" onclick="calculateResult();">
<input type="text" id="result">
</div>
<div id="right">Genveje</div>
</div>

<div id="bund">Bund</div>
</div>

</div>
</body>
</html>
Avatar billede g0t Nybegynder
04. april 2008 - 10:30 #7
Har fjernet et semikolon som nok var en syntax fejl. Men virrker stadig ikke.
Avatar billede soerenlyn Nybegynder
04. april 2008 - 12:23 #8
Fejlen er at dit felt hvor resultatet skal stå i har id="result" og i funktionen siger du document.getElementById("results").value... Derfor kan den ikke finde den. Hvis du ændrer i funktionen så der står:

document.getElementById("result").value = prize;

så virker det. Nu er problemet bare at hvis tekst-felterne er tomme eller hvis der er tekst i, så går det galt. Er det noget vi skal fixe, eller er du sikker på at folk vil skrive et tal i?
Avatar billede g0t Nybegynder
04. april 2008 - 13:17 #9
Sjovt nok fandt jeg selv ud af det :) men nu har jeg et andet problem, jeg skal finde ud af om der er tekst i en string. Er der en funktion der kan klare det?

Det ser sådan ud nu:
<html>
<head>
<title>Dynasti Rejser - Kina rejser</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript">
function calculateResult(){
    var prize11 = parseInt(document.getElementById("prize1").value);
    var prize12    = parseInt(document.getElementById("prize2").value);
    var prize13    = parseInt(document.getElementById("prize3").value);
    var prize = prize11+prize13*(prize12);
   
    if (prize12 == "") {alert("Husk at udfylde alle felter!");}
    else if (prize11 == 1) {alert("Husk at vælge destination!");}
    else if (prize13 == 1) {alert("Husk at vælge rejsetype!");}
    else {document.getElementById("result").value = "Ialt: "+prize+" DKK";};
}
</script>
<script type="text/javascript">
function godkend(){
  confirm("Tryk OK for at godkende bestillingen. Vi kontakter dig for yderligere aftale.");
}
</script>
</head>
<body>
<form name="udregner">
<select type="text" id="prize1">
<option value="1">Vælg Destination</option>
<option value="1000">Beijing</option>
<option value="1200">Shainghai</option>
</select>
<br />
Antal Personer<br />
<input id="prize2" value="1">
<br />

Rejsetype<br />
<select type="text" id="prize3">
<option value="1">Vælg Rejsetype</option>
<option value="10000">1. Standard rejse</option>
<option value="14000">2. Kysttogt</option>
<option value="12000">3. Skrædersyget rejse</option>
</select>
<br />
<input type="button" value="Udregn Ca. Pris" onclick="calculateResult();">
<br />
<br />
<input type="text" id="result">
<br />
<br />
Telefon Nummer:
<br />
<input type="text">
<br />
<input type="button" value="Godkend Pris" onclick="godkend();">
</form>
</body>
</html>
Avatar billede soerenlyn Nybegynder
04. april 2008 - 13:21 #10
Der kan du gøre det rigtigt nemt med reg-exp, men det er jeg ikke særligt god til..

Bare lige for at kodefucke lidt, så behøver du ikke sætte "{" og "}" når der kun kommer én enkel handling. Dvs du kan undlade dem her:

    if (prize12 == "") alert("Husk at udfylde alle felter!");
    else if (prize11 == 1) alert("Husk at vælge destination!");
    else if (prize13 == 1) alert("Husk at vælge rejsetype!");
    else document.getElementById("result").value = "Ialt: "+prize+" DKK";
Avatar billede g0t Nybegynder
04. april 2008 - 14:12 #11
Hva med det her? kan vi ikke koble det på?

// returns true if the string only contains characters 0-9
function isNumeric(str){
  var re = /[\D]/g
  if (re.test(str)) return false;
  return true;
}
Avatar billede soerenlyn Nybegynder
04. april 2008 - 14:17 #12
Jo ngoet i den retning :) Man kan sætte det på én linje:

// returns true if the string only contains characters 0-9
function isNumeric(str){
    return (! /[\D]/g.test(str));
}
Avatar billede soerenlyn Nybegynder
04. april 2008 - 14:17 #13
Jeg tror dog at der ksal noget rundt om /[\D]/g...
Avatar billede g0t Nybegynder
04. april 2008 - 21:53 #14
Fik det vil at virke :)

www.g0t.dk/kina2
Avatar billede soerenlyn Nybegynder
05. april 2008 - 10:38 #15
Kanon - det var godt :)
Avatar billede g0t Nybegynder
05. april 2008 - 12:59 #16
mange tak for hjælpen
Avatar billede soerenlyn Nybegynder
05. april 2008 - 13:18 #17
Det var så lidt - skal jeg smide svar?
Avatar billede g0t Nybegynder
05. april 2008 - 13:56 #18
Hva mener du?
Avatar billede soerenlyn Nybegynder
05. april 2008 - 14:04 #19
Når du opretter et spørgsmål så vælger du hvor mange point du vil give ud - i dit tilfælde har du valgt 30. Så når du har fået svar på dit spørgsmål, så giver du pointene til den/dem du mener har hjulpet dig mest..
Avatar billede g0t Nybegynder
06. april 2008 - 15:32 #20
okay fint :) vidste jeg egentligt godt. havde glemt det igen.
Avatar billede soerenlyn Nybegynder
06. april 2008 - 15:37 #21
Hehe - 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