Avatar billede theboy Nybegynder
28. november 2001 - 12:56 Der er 8 kommentarer og
1 løsning

TIdsberegninger

Jeg har et problem med nogle tidsberegninger. Endelig har jeg lavet et regneark i excel, der kan bruges til at beregne nogle procenter af nogle tider. (se evt. http://www.viborg-svommeklub.dk/tider/interval.htm)
Mit problem er bare at der er så mange, som ikke kan bruge regnearket til at beregne deres tider i, fordi de ikke har Microsoft Office Web Components instaleret. Så var det jeg tænke på om der var nogen der kunne hjælpe mig med at lave grundstene til et javascript, der kan det samme. Det skal fungere på den måde at man indtaster i en i \"Min.sek.1/100\", hvor efter at denne tid, bliver divideret med en % sats. Resultatet skulle så også gerne komme ud i \"Min.sek.1/100\" og ikke bare sek.
Er det noget der kan lade sig gøre, eller er det et andet script sprog jeg skal benytte?
Avatar billede ras2000 Nybegynder
28. november 2001 - 13:05 #1
Er det ikke nemmest at regne alle tider om i millisekunder, og så bare dele?
Avatar billede jakoba Nybegynder
28. november 2001 - 13:10 #2
Du kommer nok til at forklare formatet \'Min.sek.1/100\' lidt grundigere. Jeg fatter ikke hvad det betyder.

ellers er tidsberegninger i Javascript ret nemt. brug datoobjektet som standard og konverter frem og tilbage til diverse sjove formater folk bruger:
Avatar billede ras2000 Nybegynder
28. november 2001 - 15:01 #3
Her er lidt at kigge på, det bruger ikke dato formatet, men er vist rimelig nemt at forstå:
<html>

<head>
<title>New Page 3</title>
<script type=\"text/javascript\">
function tjek(tid){
    if (tid.value > 60){
        alert(\"der er da noget galt hva?\");
        tid.focus();
    }
}
function beregn(){
    var tid1 = document.formen.minutter1.value*6000 + document.formen.sekunder1.value*100;
    var tid2 = document.formen.minutter2.value*6000 + document.formen.sekunder2.value*100;
    var tidsforskel = tid1 - tid2;
    minutter = (Math.round(tidsforskel/6000) <= tidsforskel/6000) ? Math.round(tidsforskel/6000): Math.round(tidsforskel/6000)-1;
    sekunder = (tidsforskel - minutter*6000)/100;
    document.formen.minutter3.value = minutter;
    document.formen.sekunder3.value = Math.round(sekunder*100)/100;
    minutter = (Math.round(tid1/2) <= tid1/2/6000) ? Math.round(tid1/2/6000): Math.round(tid1/2/6000)-1;
    sekunder = (tid1/2 - minutter*6000)/100;
    document.formen.minutter4.value = minutter;
    document.formen.sekunder4.value = Math.round(sekunder*100)/100;
}
</script>
</head>

<body>
<form name=\"formen\">
<table>
    <tr>
        <td>Indtast en tid her:</td>
        <td><input type=\"text\" name=\"minutter1\" onChange=\"tjek(this)\"></td>
        <td>minutter</td>
        <td><input type=\"text\" name=\"sekunder1\" onChange=\"tjek(this)\"></td>
        <td>sekunder</td>
    </tr>
    <tr>
        <td>Indtast en anden tid her:</td>
        <td><input type=\"text\" name=\"minutter2\" onChange=\"tjek(this)\"></td>
        <td>minutter</td>
        <td><input type=\"text\" name=\"sekunder2\" onChange=\"tjek(this)\"></td>
        <td>sekunder</td>
    </tr>
</table>
<input type=\"button\" value=\"ok\" onclick=\"beregn()\"><br>
Her får du så forskellen mellem de to:
<input type=\"text\" name=\"minutter3\">
<input type=\"text\" name=\"sekunder3\"><br>
Og her er halvdelen af den 1. tid:
<input type=\"text\" name=\"minutter4\">
<input type=\"text\" name=\"sekunder4\">
</formen>
</body>

Avatar billede ras2000 Nybegynder
29. november 2001 - 11:51 #4
Æh, kan du ikke forklare hvorfor du ikke kan bruge det?
Avatar billede theboy Nybegynder
29. november 2001 - 11:59 #5
Jo, for scriptet. Det vil hælpe vis scriptet ikke regne tidsforskellen ud mellem to tider, men istedet tog tider og dividere med fx 0.62
Det ovenstående sctipt hjælper ikke så meget, men hvis du kan vise hvordan scriptet skulle laves, ved, så man dividere tiden med fx 0.62 automatisk ville det være fedt!
Avatar billede ras2000 Nybegynder
29. november 2001 - 12:13 #6
Det er jo lidt nemmere hvis du siger det, så slipper jeg for at gætte. Scriptet regnede også halvdelen af den første tid ud, jeg regnede med at du selv ville se systemet. Her er der en til:
<html>

<head>
<title>New Page 3</title>
<script type=\"text/javascript\">
function tjek(tid){
    if (tid.value > 60){
        alert(\"der er da noget galt hva?\");
        tid.focus();
    }
}
function beregn(){
    var tid1 = document.formen.minutter1.value*6000 + document.formen.sekunder1.value*100;
    var procent = document.formen.procent.value/100;
    minutter = (Math.round(tid1*procent/6000) <= tid1*procent/6000) ? Math.round(tid1*procent/6000): Math.round(tid1*procent/6000)-1;
    sekunder = (tid1*procent - minutter*6000)/100;
    document.formen.minutter4.value = minutter;
    document.formen.sekunder4.value = Math.round(sekunder*100)/100;
}
</script>
</head>

<body>
<form name=\"formen\">
<table>
    <tr>
        <td>Indtast en procentsats her:</td>
        <td><input type=\"text\" name=\"procent\"></td>
        <td>%</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>Indtast en tid her:</td>
        <td><input type=\"text\" name=\"minutter1\" onChange=\"tjek(this)\"></td>
        <td>minutter</td>
        <td><input type=\"text\" name=\"sekunder1\" onChange=\"tjek(this)\"></td>
        <td>sekunder</td>
    </tr>
</table>
<input type=\"button\" value=\"ok\" onclick=\"beregn()\"><br>
Og her er procentsatsen af tiden:
<input type=\"text\" name=\"minutter4\">
<input type=\"text\" name=\"sekunder4\">
</formen>
</body>
</html>
Avatar billede theboy Nybegynder
30. november 2001 - 00:08 #7
Mage tak ras2000.
Nu har jeg endelig fået sat det rigtigt op, men jeg har stadig problemer....
Jeg kan godt få det medfølgende script til at regne den ene tid ud, men den anden tid bliver ikke beregnet. Det skulle jo gerne være sådan at den tid man indtaster kan bruges mere end en gang. Kan du hjælpe med at rette det til, således at den indtastede tid kan bruges mere end en gang.

<head>
<title>Intervaltider</title>
<script type=\"text/javascript\">
function tjek(tid){
    if (tid.value > 60){
        alert(\"der er da noget galt hva?\");
        tid.focus();
    }
}
function beregn(){
    var tid1 = document.formen.minutter1.value*6000 +
document.formen.sekunder1.value*100;
    minutter = (Math.round(tid1/0.62/6000) <= tid1/0.62/6000) ?
Math.round(tid1*0.62/6000): Math.round(tid1/0.62/6000)-1;
    sekunder = (tid1/0.62 - minutter/6000)/100;
    document.formen.minutter4.value = minutter;
    document.formen.sekunder4.value = Math.round(sekunder*100)/100;
}

function beregn(){
    var tid1 = document.formen.minutter1.value*6000 +
document.formen.sekunder1.value*100;
    minutter = (Math.round(tid1/0.65/6000) <= tid1/0.65/6000) ?
Math.round(tid1*0.65/6000): Math.round(tid1/0.65/6000)-1;
    sekunder = (tid1/0.65 - minutter/6000)/100;
    document.formen.minutter5.value = minutter;
    document.formen.sekunder5.value = Math.round(sekunder*100)/100;
}
</script>
</head>

<body>
<form name=\"formen\">
<table>

    <tr>
        <td>Indtast 50m tid her:</td>
        <td><input type=\"text\" name=\"minutter1\"
onChange=\"tjek(this)\" size=\"6\"></td>
        <td>minutter</td>
        <td><input type=\"text\" name=\"sekunder1\"
onChange=\"tjek(this)\" size=\"10\"></td>
        <td>sekunder</td>
    </tr>
</table>
<input type=\"button\" value=\"ok\" onclick=\"beregn()\"><br>
<div align=\"left\">
  <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
    <tr>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"14%\" colspan=\"2\" align=\"center\"><b>A1</b></td>
      <td width=\"14%\" colspan=\"2\" align=\"center\"><b>A2</b></td>
      <td width=\"14%\" colspan=\"2\" align=\"center\"><b>EN1</b></td>
      <td width=\"14%\" colspan=\"2\" align=\"center\"><b>EN2</b></td>
      <td width=\"14%\" colspan=\"2\" align=\"center\"><b>AN1</b></td>
      <td width=\"16%\" colspan=\"2\" align=\"center\"><b>AN2</b></td>
    </tr>
    <tr>
      <td width=\"7%\">50m tid</td>
    <td class=\"xl44\">Kon</td>
      <td width=\"7%\">
<input type=\"text\" name=\"minutter4\" size=\"8\"></td>
      <td width=\"7%\"><input type=\"text\" name=\"sekunder4\" size=\"8\"></td>
      <td width=\"7%\">
<input type=\"text\" name=\"minutter5\" size=\"8\"></td>
      <td width=\"7%\"><input type=\"text\" name=\"sekunder5\" size=\"8\"></td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"7%\">&nbsp;</td>
      <td width=\"8%\">&nbsp;</td>
      <td width=\"8%\">&nbsp;</td>
    </tr>
  </table>
</div>
</body>

Avatar billede ras2000 Nybegynder
30. november 2001 - 10:29 #8
ok:
<html>
<head>
<title>Intervaltider</title>
<script type=\"text/javascript\">
var minutter = 0;
var sekunder = 0;
function tjek(tid){
    if (tid.value > 60){
        alert(\"der er da noget galt hva?\");
        tid.focus();
    }
}
function beregn(){
    var tid1 = document.formen.minutter1.value*6000 + document.formen.sekunder1.value.replace(\",\",\".\")*100;
    document.formen.a1.value = beregnsm(tid1*0.62);
    document.formen.a2.value = beregnsm(tid1*0.75);
    document.formen.en1.value = beregnsm(tid1*0.23);
    document.formen.en2.value = beregnsm(tid1*0.45);
    document.formen.an1.value = beregnsm(tid1*0.87);
    document.formen.an2.value = beregnsm(tid1*0.25);
}

function beregnsm(tid) {
    minutter = (Math.round(tid/6000) <= tid/6000) ? Math.round(tid/6000) : Math.round(tid/6000)-1;
    sekunder = Math.round(tid - minutter*6000)/100;
    string = minutter + \' min \' + sekunder;
    string = string.replace(\".\",\",\");
    return string;
}
</script>
</head>

<body>
<form name=\"formen\">
<table>
    <tr>
        <td>Indtast 50m tid her:</td>
        <td><input type=\"text\" style=\"text-align:right\" name=\"minutter1\" onChange=\"tjek(this)\" size=\"6\"></td>
        <td>minutter</td>
        <td><input type=\"text\" style=\"text-align:right\" name=\"sekunder1\" onChange=\"tjek(this)\" size=\"10\"></td>
        <td>sekunder</td>
    </tr>
</table>

<input type=\"button\" value=\"ok\" onclick=\"beregn()\"><br>

<div align=\"left\">
  <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td width=\"14%\" align=\"center\"><b>A1</b></td>
      <td width=\"14%\" align=\"center\"><b>A2</b></td>
      <td width=\"14%\" align=\"center\"><b>EN1</b></td>
      <td width=\"14%\" align=\"center\"><b>EN2</b></td>
      <td width=\"14%\" align=\"center\"><b>AN1</b></td>
      <td width=\"16%\" align=\"center\"><b>AN2</b></td>
    </tr>
    <tr>
      <td>50m tid</td>
    <td class=\"xl44\">Kon</td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"a1\"></td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"a2\"></td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"en1\"></td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"en2\"></td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"an1\"></td>
      <td><input type=\"text\" style=\"text-align:right\" name=\"an2\"></td>
    </tr>
  </table>
</div>
</body>

</html>
Jeg har ændret det så man kan taste ind med komman i stedet for punktum. Du må selv sætte de forskellige procenter, det burde være indlysende. Du kan lave flere felter som du har lyst.
Avatar billede ras2000 Nybegynder
30. november 2001 - 11:16 #9
For en god ordens skyld skal form tagget afsluttes. Dvs der skal en </form> ind lige efter det sidste </table>. Den fungerer uden, men det kan give dig problemer senere hvis det mangler.
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

IT-JOB