Avatar billede badazz Novice
12. december 2015 - 03:01 Der er 4 kommentarer og
1 løsning

Problem med udregning i html

Hej..

Jeg har haft gang i en simpel udregning, men jeg har tilføjet så jeg skal have to udregninger (facit) mit øverste facit (amount1) virker fint, jeg har så forsøgt at lave en mere, men det kan jeg ikke få til at virke, hvad gør jeg mon galt? kan jeg ikke lave to udregninger på den måde?

<form onsubmit="return false" oninput="amount1.value = (antal1.valueAsNumber * watt1.valueAsNumber) + (antal2.valueAsNumber * watt2.valueAsNumber)">
<form onsubmit="return false" oninput="amount2.value = (antal1.valueAsNumber * watt1b.valueAsNumber) + (antal2.valueAsNumber * watt2b.valueAsNumber)">

<!-- 1 Start-->
  <p><label for="antal1">Model A</label>
  <input type="number" min="0" id="antal1" value="0" name="antal1"></p>

  <p><label for="watt1">watt max</label>
  <input type="number" min="0" id="watt1" value="1.1" name="watt1"></p>

  <p><label for="watt1b">watt min</label>
  <input type="number" min="0" id="watt1b" value="0.12" name="watt1b"></p>
<!-- 1 Slut-->
<!-- 2 Start-->
  <p><label for="antal2">Model B</label>
  <input type="number" min="0" id="antal2" value="0" name="antal2"></p>

  <p><label for="watt2">watt max</label>
  <input type="number" min="0" id="watt2" value="10" name="watt2"></p>

  <p><label for="watt2b">watt min</label>
  <input type="number" min="0" id="watt2b" value="0.17" name="watt2b"></p>
<!-- 2 Slut-->


  <p>I Alt MAX:: <strong><output name="amount1" for="Max forbrug">0</output>W</strong></p>
  <p>I Alt standby:: <strong><output name="amount2" for="Min forbrug">0</output>W</strong></p>
</form></form>
Avatar billede olsensweb.dk Ekspert
12. december 2015 - 08:01 #1
du kan ikke have en form inde i en form
du kunne lave udregningen i en addEventListener
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title>test</title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    document.addEventListener("change", function(){
        var antal1 = document.getElementById("antal1").valueAsNumber;
        var antal2 = document.getElementById("antal2").valueAsNumber;
       
        var watt1 = document.getElementById("watt1").valueAsNumber;
        var watt2 = document.getElementById("watt2").valueAsNumber;
        var watt1b = document.getElementById("watt1b").valueAsNumber;
        var watt2b = document.getElementById("watt2b").valueAsNumber;   
       
        document.getElementById("amount1").value = (antal1 * watt1) + (antal2 * watt2);
        document.getElementById("amount2").value = (antal1 * watt1b) + (antal2 * watt2b);   
    });

    </script>
</head>
<body>


<form>
<!-- 1 Start-->
  <p><label for="antal1">Model A</label>
  <input type="number" min="0" id="antal1" value="0" name="antal1"></p>

  <p><label for="watt1">watt max</label>
  <input type="number" min="0" id="watt1" value="1.1" name="watt1"></p>

  <p><label for="watt1b">watt min</label>
  <input type="number" min="0" id="watt1b" value="0.12" name="watt1b"></p>
<!-- 1 Slut-->
<!-- 2 Start-->
  <p><label for="antal2">Model B</label>
  <input type="number" min="0" id="antal2" value="0" name="antal2"></p>

  <p><label for="watt2">watt max</label>
  <input type="number" min="0" id="watt2" value="10" name="watt2"></p>

  <p><label for="watt2b">watt min</label>
  <input type="number" min="0" id="watt2b" value="0.17" name="watt2b"></p>
<!-- 2 Slut-->


  <p>I Alt MAX:: <strong><output id="amount1" name="amount1" for="Max forbrug">0</output>W</strong></p>
  <p>I Alt standby:: <strong><output id="amount2" name="amount2" for="Min forbrug">0</output>W</strong></p>
</form>

</body>
</html>
Avatar billede badazz Novice
12. december 2015 - 10:30 #2
tak for hjælpen, poster du et svar?
Avatar billede badazz Novice
12. december 2015 - 10:58 #3
Kan jeg i min output linje

<output id="amount2" name="amount2" for="Min forbrug">0</output>

Definerer at jeg vil have 2 decimaler ?

Eller skal jeg gøre det et andet sted ?
Som det er nu, så laver den 3x1,1 om til 3.3000000000000003W

Derfor vil jeg gerne begrænse det til to decimaler
Avatar billede olsensweb.dk Ekspert
12. december 2015 - 15:18 #4
#2
får du her

#3
toFixed(2); er løsningen
http://www.w3schools.com/jsref/jsref_tofixed.asp

(utested)

document.getElementById("amount1").value = ((antal1 * watt1) + (antal2 * watt2)).toFixed(2);
document.getElementById("amount2").value = ((antal1 * watt1b) + (antal2 * watt2b)).toFixed(2);   
Avatar billede badazz Novice
12. december 2015 - 18:00 #5
Det virker ikke lige umiddlbart som du reslår, men prøver lige at lege med det
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

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