Avatar billede mini41 Nybegynder
03. april 2003 - 13:01 Der er 24 kommentarer og
2 løsninger

Ændring til script

Jeg skal bruge en ændring til dette script.
Det skal virke sådan:
Hvis 'reparb' er et heltal skal der efterfølgende sættet , og 00 altså, hvis tallet er 50 skal det blive til 50,00
Hvis 'reparb' er feks. 50.5 skal tallet blive til 50,00.

Hvordan fikser jeg det ?



<!--
function timetal(form) {
var t1 = form.reptimer.value;
var t2 = form.timepris.value;
form.reparb.value = t1 * t2;
}
//-->
Avatar billede ocp Nybegynder
03. april 2003 - 13:21 #1
function timetal(form) {
var t1 = form.reptimer.value;
var t2 = form.timepris.value;
form.reparb.value = parseInt(t1 * t2) + ",00";
}
Avatar billede mini41 Nybegynder
03. april 2003 - 13:32 #2
Det virker næsten, men 1/2 ganget med 125 bliver nu 62,00
:)
Avatar billede mini41 Nybegynder
03. april 2003 - 13:34 #3
Den må ikke runde op
Avatar billede ocp Nybegynder
03. april 2003 - 13:36 #4
Det er altså også rundet ned. Rundet op giver det 63 ;-)
Avatar billede ocp Nybegynder
03. april 2003 - 13:37 #5
Men ellers kan denne funktion også gøre arbejdet:

alert(Math.floor(0.5 * 125) + ",00");
Avatar billede mini41 Nybegynder
03. april 2003 - 13:40 #6
Hvordan sætter jeg det ind ?
Avatar billede mini41 Nybegynder
03. april 2003 - 13:42 #7
øhh det giver jo bare en alert box ?
Avatar billede ocp Nybegynder
03. april 2003 - 13:45 #8
form.reparb.value = Math.floor(t1 * t2) + ",00";
Avatar billede mini41 Nybegynder
03. april 2003 - 13:47 #9
Ja, den gør det samme, men er det ikke muligt at få den til at undlade at runde tallet op/ned ?
Avatar billede mini41 Nybegynder
03. april 2003 - 13:52 #10
Jeg prøvede med dette, men det virker ikke helt efter hensigten :)

<!--
function timetal(form) {
var t1 = form.reptimer.value;
var t2 = form.timepris.value;
var kommaTal = Math.floor(t1 * t2)
if (kommaTal > 100) {
  kommaTal -= 100;
  t1_arr[0] = t1_arr[0] - 0 + 1;
}
kommaTal = kommaTal + '';
if (kommaTal.length == 0) {
kommaTal = "00";
}
if (kommaTal.length == 1) {
kommaTal = "0" + kommaTal;
}
form.reparb.value = Math.floor(t1 * t2) + kommaTal;

}
//-->
Avatar billede ocp Nybegynder
03. april 2003 - 14:09 #11
Jo, men du skrev specifikt at du ville have 50.5 til at blive 50 - det er altså en nedrunding.
Ellers kan du bruge:

form.reparb.value = Math.round(t1 * t2) + ",00";
Avatar billede mini41 Nybegynder
03. april 2003 - 14:31 #12
Næh det kan jeg ikke.
Hvis jeg ganger 125 med 0.5 giver det resuslatet 63, hvilket jo ikke er rigtigt, min lommeregner siger 62,50 og her er problemet.

Jeg kan godt få den til at skrive 62.5 ved at fjerne Math.round men det er meningen den skal skrive 62,50
Er det ikke muligt ?
Avatar billede ocp Nybegynder
03. april 2003 - 15:44 #13
DU skrev: Hvis 'reparb' er feks. 50.5 skal tallet blive til 50,00.

Men skidt da:

        var t1 = form.reptimer.value;
        var t2 = form.timepris.value;

    var nResult = Math.round(t1 * t2);
    var nRemainder = nResult - Math.ceil(nResult);
    var sNumber;
    var sRemainder = (nRemainder == 0 ? "" : nRemainder);
   
    sNumber = Math.ceil(nResult) + ",";

    switch( sRemainder.length + "" ) {
        case "0": sNumber += "00"; break;
        case "1": sNumber += sRemainder + "0"; break;
        case "2": sNumber += sRemainder; break;
    };
   
        form.reparb.value = sNumber;
Avatar billede ocp Nybegynder
03. april 2003 - 15:45 #14
Sorry - ret lig til dette:

var nResult = Math.round(t1 * t2,2);
Avatar billede mini41 Nybegynder
03. april 2003 - 15:54 #15
Jeg får en script fejl.
Form er ikke defineret ?
Avatar billede mini41 Nybegynder
03. april 2003 - 15:58 #16
Det var mig der sov.

Jeg har indsat dette men får stadig det samme 125 * 0.5 = 63,00

<!--
function timetal(form) {
var t1 = form.reptimer.value;
        var t2 = form.timepris.value;

    var nResult = Math.round(t1 * t2,2);
    var nRemainder = nResult - Math.ceil(nResult);
    var sNumber;
    var sRemainder = (nRemainder == 0 ? "" : nRemainder);
   
    sNumber = Math.ceil(nResult) + ",";

    switch( sRemainder.length + "" ) {
        case "0": sNumber += "00"; break;
        case "1": sNumber += sRemainder + "0"; break;
        case "2": sNumber += sRemainder; break;
    };
form.reparb.value = sNumber;
}
//-->
Avatar billede mm12010 Nybegynder
03. april 2003 - 16:01 #17
function timetal(form){
    var t1 = parseInt(form.reptimer.value);
    var t2 = parseInt(form.timepris.value);
    form.reparb.value = Math.round(t1 * t2 * 100)/100;
    return true;
    }
Avatar billede mini41 Nybegynder
03. april 2003 - 16:22 #18
mm12010, kan jeg ikke bruge
Avatar billede mm12010 Nybegynder
03. april 2003 - 16:32 #19
har du  prøvet? den giver ikke 63...
Avatar billede mini41 Nybegynder
03. april 2003 - 16:37 #20
korrekt, men scriptet skal kunne lave 62.5 om til 62,50 og det kan det ikke :)
Avatar billede mm12010 Nybegynder
03. april 2003 - 16:51 #21
ahh - det er bare mig der ikke læser hvad du spørger om :o) - sorry
Avatar billede mm12010 Nybegynder
03. april 2003 - 17:07 #22
function timetal(form){
    var t1 = parseInt(form.reptimer.value);
    var t2 = parseInt(form.timepris.value);
    tal = String(Math.round(t1 * t2 * 100)/100);
    tal = ((tal.indexOf(".") == -1) ? tal + ",00" : tal);
    tal = ((tal.indexOf(".") == tal.length-1) ? tal + "0" : tal);
    tal = tal.replace(/./gi,",");
    form.reparb.value = tal;
    return true;
    }
Avatar billede mini41 Nybegynder
03. april 2003 - 21:56 #23
Næhh, det eneste der sker er at resultatet (reparb) = ,,,,

:)
Avatar billede mm12010 Nybegynder
03. april 2003 - 23:46 #24
<html>
<head>
<title>timetal</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function timetal(form){
    var t1 = parseFloat(form.reptimer.value);
    var t2 = parseFloat(form.timepris.value);
    tal = String(Math.round(t1 * t2 * 100)/100);
    tal = ((tal.indexOf(".") == -1) ? tal + ",00" : tal);
    tal = ((tal.indexOf(".") == tal.length-2) ? tal + "0" : tal);
    tal = tal.replace(/\./gi,",");
    form.reparb.value = tal;
    return true;
    }
//-->
</script>
</head>
<body>
<form name="form" method="post" action="">
  <input type="text" name="reptimer">
  <input type="text" name="timepris">
  <input type="text" name="reparb">
  <input type="button" name="Submit" value="Submit" onClick="timetal(this.form);">
</form>
</body>
</html>
Avatar billede mini41 Nybegynder
04. april 2003 - 07:35 #25
mm12010:
Perfekt, der virker sgu som en drøm :)

20 point til dig og 10 point til 'ocp' for svar.
Håber det er ok.
Avatar billede mm12010 Nybegynder
04. april 2003 - 12:12 #26
helt ok :o)
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