Avatar billede kev. Nybegynder
09. juli 2002 - 10:01 Der er 12 kommentarer og
1 løsning

Ganske almindelig ur

Prøver på at lave noget så simpelt som en ganske alminde ur, der hele tiden viser... tiden

Har følgende kode, men der er åbenbart fejl i det -->

    <script LANGUAGE="JavaScript">
      <!--

        var diffDays=-1, diffHours=-1, diffMins=-1, diffSecs=-1
        var msPerDay = 24 * 60 * 60 * 1000
        var msPerHour = 60 * 60 * 1000
        var msPerMin = 60 * 1000
        var msPerSec = 1000


        function klokken()

        {

        var mitur = new Date()
        var diffMs = mitur.getTime()


        var diffDays = Math.floor(diffMs / msPerDay)
        diffMs -= diffDays * msPerDay

        var diffHours = Math.floor(diffMs / msPerHour)
        diffMs -= diffHours * msPerHour

        var diffMins = Math.floor(diffMs / msPerMin)
        diffMs -= diffMins * msPerMin

        var diffSecs = Math.floor(diffMs / msPerSec)


                outstr=""


                if(diffHours > 9)
                outstr += diffHours + ":"
                else
                if(diffHours > 0 && diffHours < 10)
                outstr += "0" + diffHours + ":"
                else
                if(diffHours == 0)
                outstr += "00:"


                if(diffMins > 9)
                outstr += diffMins + ":"
                else
                if(diffMins > 0 && diffMins < 10)
                outstr += "0" + diffMins + ":"
                else
                if(diffMins == 0)
                outstr += "00:"


                if(diffSecs > 9)
                outstr += diffSecs
                else
                if(diffSecs > 0 && diffSecs < 10)
                outstr += "0" + diffSecs
                else
                if(diffSecs == 0)
                outstr += "00"


        document.forms[0].count.value = outstr;

        }

        timerID = setTimeout(klokken(),1000)

    // -->
    </script>


Fejl -->

1. den siger at document.forms[0].count er null eller ikke et objekt
2. den skriver trods 1. tiden med præcis 2 timers afvigelse
3. trods 2. tæller den ikke ned


Nogen, der ved hvad der er galt? Eller har et andet script, der virker?
Avatar billede kev. Nybegynder
09. juli 2002 - 10:02 #1
Har følgende i body -->

<BODY class="bgmain" onLoad="klokken()">

        <form name="form1">
        input class="count" name="count" value="" size="7">
        </form>
Avatar billede hien Nybegynder
09. juli 2002 - 10:11 #2
Ved ikke hvad der er galt med dit script, men du kan sikkert bruge dette fra html.dk:

<script type="text/javascript">
<!-- Dette script og mange flere -->
<!-- findes hos http://www.html.dk -->
<!-- Start

var months=new Array(13);
months[1]="januar";
months[2]="februar";
months[3]="marts";
months[4]="april";
months[5]="maj";
months[6]="juni";
months[7]="juli";
months[8]="august";
months[9]="september";
months[10]="oktober";
months[11]="november";
months[12]="december";
var time=new Date();
var lmonth=months[time.getMonth() + 1];
var date=time.getDate();
var year=time.getFullYear();
var hours=time.getHours();
var minutes=time.getMinutes();
var seconds=time.getSeconds();

document.write("<p>" + date + ". " + lmonth + " " + year);
document.write(" kl. " + hours + ":" + minutes + ":" + seconds + "</p>");

// Slut -->
</script>
Avatar billede jakoba Nybegynder
09. juli 2002 - 10:16 #3
du kalder din funktion klokken før hele siden er indlæst.

start uret ved onload i body:

<body  ...  onload="klokken();">

og ikke andre steder.
Avatar billede jakoba Nybegynder
09. juli 2002 - 10:18 #4
Og din setTimeout skal flyttes ind i funktione. Den må ikke stå udenfor:

    function klokken()

    {

        var mitur = new Date()
        var diffMs = mitur.getTime()


        var diffDays = Math.floor(diffMs / msPerDay)
        diffMs -= diffDays * msPerDay

        var diffHours = Math.floor(diffMs / msPerHour)
        diffMs -= diffHours * msPerHour

        var diffMins = Math.floor(diffMs / msPerMin)
        diffMs -= diffMins * msPerMin

        var diffSecs = Math.floor(diffMs / msPerSec)


                outstr=""


                if(diffHours > 9)
                outstr += diffHours + ":"
                else
                if(diffHours > 0 && diffHours < 10)
                outstr += "0" + diffHours + ":"
                else
                if(diffHours == 0)
                outstr += "00:"


                if(diffMins > 9)
                outstr += diffMins + ":"
                else
                if(diffMins > 0 && diffMins < 10)
                outstr += "0" + diffMins + ":"
                else
                if(diffMins == 0)
                outstr += "00:"


                if(diffSecs > 9)
                outstr += diffSecs
                else
                if(diffSecs > 0 && diffSecs < 10)
                outstr += "0" + diffSecs
                else
                if(diffSecs == 0)
                outstr += "00"


        document.forms[0].count.value = outstr;

        timerID = setTimeout(klokken(),1000);    // flyttet ind i funktionen

  }
Avatar billede kev. Nybegynder
09. juli 2002 - 10:46 #5
Det eneste tidspunkt, jeg kalder funktionen ER ved onLoad=

hmmm, prøvede at flytte funktionen indenfor, nu skriver den i stedet "Ikke mere hukommelse" ...har da ellers 852 mb, måske skal jeg genstarte computeren mere en blot en gang i ugen...

nu får vi se, om det virker
Avatar billede jakoba Nybegynder
09. juli 2002 - 10:56 #6
kan du lægge et link til siden?
Avatar billede kev. Nybegynder
09. juli 2002 - 11:00 #7
Har lavet følgende i stedet -->

    <script LANGUAGE="JavaScript">
      <!--
        function klokken()
        {
            var time=new Date();
            var hours=time.getHours();
            var minutes=time.getMinutes();
            var seconds=time.getSeconds();
            outstr = hours + ":" + minutes + ":" + seconds

            document.forms[0].count.value = outstr;

            timerID = setTimeout(klokken(),1000)
        }
    // -->
    </script>

Men jeg får stadig:
  "Fejl: Der er ikke mere hukommelse"
efterfulgt af:
  "Out of memory at line 0"
Avatar billede mikoalngelo Nybegynder
09. juli 2002 - 11:05 #8
der mangler et < før input-taget
Avatar billede kev. Nybegynder
09. juli 2002 - 11:05 #9
Avatar billede kev. Nybegynder
09. juli 2002 - 11:08 #10
mikoalngelo > den er der faktisk. jeg slettede en del af koden, inden jeg lagde det ind her og der smuttede < også....
Avatar billede mikoalngelo Nybegynder
09. juli 2002 - 11:28 #11
oki
Avatar billede jakoba Nybegynder
09. juli 2002 - 11:47 #12
Det javascriptkode man sætter i kø med set-timeout skal stå i en streng (med " eller ' tegn om)
        timerID = setTimeout( "klokken();", 1000 );

mvh JakobA
Avatar billede kev. Nybegynder
09. juli 2002 - 12:04 #13
der var den... nu virker det... så skal jeg bare lige have det rettet, så den skriver f.eks. 13:00:04 og ikke 13:0:4, men det kode har jeg vist...
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