Avatar billede ingeman Seniormester
20. februar 2007 - 19:46 Der er 3 kommentarer og
1 løsning

Hvordan for jeg tilskrivet med 2 dec

f = document.UserForm
    total = 0;
    altialt = 0;
    for(i=1; i < 10 + 1; i++) /* jeg har kun 3 felter.. det ændrer du bare til 10 */
    {
        antal = eval("f.Antalkg" + i + ".value");
        antal = antal.replace(",", ".");
       
        pr = eval("f.Prkg" + i + ".value");
        pr = pr.replace(",", ".");
       
        var prValue = String(pr);
        pr = formatDecimal(prValue, true, 2);   
       
      eval("f.Prkg" + i + ".value=" +  pr);
       
        if (antal != "" && pr != "")
        {
            total = parseFloat(antal) * parseFloat(pr);
           
            eval("f.Totbl" + i + ".value=" + total);
            altialt += total;

        }

hvordan får jeg tilskrevet med 2 dec til den her

eval("f.Totbl" + i + ".value=" + total);
Avatar billede o-zone Nybegynder
20. februar 2007 - 20:44 #1
Hvis dit spørgsmål bare handler om at skære decimaler væk så tallet kun har 2 decimaler, så kan du gøre således:
function talMed2decimaler(tal){
    tal = tal * 100;
    tal = Math.round(tal);
    tal = tal/100;
    return tal;
}
(det er ud af hovedet, så jeg garanterer ikke at det virker :-) )
Avatar billede ingeman Seniormester
20. februar 2007 - 21:03 #2
Jeg fik lavet det her

function formatDecimal(argvalue, addzero, decimaln) {
  var numOfDecimal = (decimaln == null) ? 2 : decimaln;
  var number = 1;

  number = Math.pow(10, numOfDecimal);

  argvalue = Math.round(parseFloat(argvalue) * number) / number;
  // If you're using IE3.x, you will get error with the following line.
  // argvalue = argvalue.toString();
  // It works fine in IE4.
  argvalue = "" + argvalue;

  if (argvalue.indexOf(".") == 0)
    argvalue = "0" + argvalue;

  if (addzero == true) {
    if (argvalue.indexOf(".") == -1)
      argvalue = argvalue + ".";

    while ((argvalue.indexOf(".") + 1) > (argvalue.length - numOfDecimal))
      argvalue = argvalue + "0";
  }

  return argvalue;
}



function DoCalc(){

    f = document.UserForm
    total = 0;
    altialt = 0;
    for(i=1; i < 10 + 1; i++) /* jeg har kun 3 felter.. det ændrer du bare til 10 */
    {
        antal = eval("f.Antalkg" + i + ".value");
        antal = antal.replace(",", ".");
       
        pr = eval("f.Prkg" + i + ".value");
        pr = pr.replace(",", ".");
       
                     
        if (antal != "" && pr != "")
        {
            eval('f.Prkg'+i+'.value= formatDecimal(pr, true, 2);');
           
            total = parseFloat(antal) * parseFloat(pr);
            eval('f.Totbl'+i+'.value= formatDecimal(total, true, 2);');
           
            altialt += total;

        }
    }
   
    var totValue = String(altialt);
    f.totalbl.value =  formatDecimal(totValue, true, 2);
     
}
Avatar billede o-zone Nybegynder
20. februar 2007 - 22:11 #3
Fair nok ... jeg vil gerne dele ... den eneste grund til at jeg skrev forrige indlæg var at jeg plejer at komme for sent :)

Jeg har i mellemtiden lavet det her (og lagt unger ;-) )


<body>
<script language="javascript" type="text/javascript">
    function trut() {
        f = document.UserForm
        total = 0;
        altialt = 0;
        for(i=1; i < 10 + 1; i++) /* jeg har kun 3 felter.. det ændrer du bare til 10 */
        {
            antal = eval("f.Antalkg" + i + ".value");
            antal = antal.replace(",", ".");
           
            pr = eval("f.Prkg" + i + ".value");
            pr = pr.replace(",", ".");
           
            pr = formatDecimal(pr, true, 2);   
           
              eval("f.Prkg" + i + ".value=" +  pr);
           
            if (antal != "" && pr != "")
            {
                total = parseFloat(antal) * parseFloat(pr);
                totalStr = formatDecimal(total, true, 2)
               
                eval("f.Totbl" + i + ".value=" + totalStr);
                altialt = altialt + total;
   
            }
        }
        f.Totbl.value = formatDecimal(altialt, true, 2);
    }
       
    function formatDecimal(tal,indsaetNuller, decimaler){
        alert("formatDecimal("+tal+","+((indsaetNuller)?"true":"false")+","+decimaler+")");
        var faktor = Math.pow(10,decimaler);
        tal = tal * faktor;
        tal = Math.round(tal);
        tal = tal/faktor;
        talStr = tal+"";
        if (indsaetNuller) {
            if (talStr.indexOf(".")<0){
                talStr = talStr + ".";
            }
            while (talStr.lastIndexOf(".")>=talStr.length-decimaler){
                talStr = talStr + "0";
            }
        }
        return talStr;
    }


</script>

<form name="UserForm">
antal Kg: <input name="Antalkg1" value="1"> pr Kg: <input name="Prkg1" value="1,1"> total bl: <input name="Totbl1"><br>
antal Kg: <input name="Antalkg2" value="1"> pr Kg: <input name="Prkg2" value="1,2546"> total bl: <input name="Totbl2"><br>
antal Kg: <input name="Antalkg3" value="1"> pr Kg: <input name="Prkg3" value="1,3"> total bl: <input name="Totbl3"><br>
antal Kg: <input name="Antalkg4" value="1"> pr Kg: <input name="Prkg4" value="1,4"> total bl: <input name="Totbl4"><br>
antal Kg: <input name="Antalkg5" value="1"> pr Kg: <input name="Prkg5" value="1,5"> total bl: <input name="Totbl5"><br>
antal Kg: <input name="Antalkg6" value="1"> pr Kg: <input name="Prkg6" value="1,6"> total bl: <input name="Totbl6"><br>
antal Kg: <input name="Antalkg7" value="1"> pr Kg: <input name="Prkg7" value="1,7"> total bl: <input name="Totbl7"><br>
antal Kg: <input name="Antalkg8" value="1"> pr Kg: <input name="Prkg8" value="1,8"> total bl: <input name="Totbl8"><br>
antal Kg: <input name="Antalkg9" value="1"> pr Kg: <input name="Prkg9" value="1,9"> total bl: <input name="Totbl9"><br>
antal Kg: <input name="Antalkg10" value="1"> pr Kg: <input name="Prkg10" value="1,9"> total bl: <input name="Totbl10"><br>
Ialt total: <input name="Totbl"><br>
<input type="button" value="beregn" onclick="trut(); return true;">
</form>
</body>

det er meget af den samme bolledej som Ingemans løsning :)
Avatar billede o-zone Nybegynder
20. februar 2007 - 22:19 #4
her har du halvdelen Ingeman :-)
http://www.eksperten.dk/spm/763768
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