Avatar billede remis Nybegynder
17. august 2008 - 12:16 Der er 14 kommentarer og
1 løsning

to tidstagere

Hej eksperter!

Jeg skal bruge et script med to tællere. Den ene skal tælle tiden som er brugt på den specifikke side (Der er flere specifikke sider). Den anden skal tælle tiden brugt på hele sitet (som holder sig i ét bobliotek). Begge i formatet: 00:00:00.

De skal begge stoppe når man lukker browseren (selvfølgelig), og tælle videre når man loader siden... Så det skal vel laves med cookies? trækker det for mange tænder ud hvis det gemmer en cookie hvert sekund?

Jeg har det med Javascript som med norsk; jeg kan sagtens læse og forstå det, men fatter hat, når det skal skrives :) Så håber I kan hjælpe.

-René
Avatar billede olebole Juniormester
17. august 2008 - 12:25 #1
<ole>

Ja, det bør laves med cookies, men du bør ikke sætte en kage hvert sekund. Du må kunne nøjes med at sætte den på siden unload event  =)

/mvh
</bole>
Avatar billede remis Nybegynder
17. august 2008 - 12:41 #2
okay... kan man stole på at unload eventen altid bliver kørt når det er? Og er unload kommandoen godkendt af w3c? (jeg går ud fra 2 x ja når du foreslår det, men vil lige være sikker :)
Avatar billede olebole Juniormester
17. august 2008 - 12:52 #3
Ja, den er standardiseret - og ja, den vil du godt kunne sætte en kage på  =)

beforeunload giver mere tid til afvikling af større scripts, men er ikke standardiseret - selvom den understøttes af 'de store' browsere
Avatar billede remis Nybegynder
17. august 2008 - 14:53 #4
Jeg har prøvet at stykke noget sammen fra flere scripts, og prøvet 50+- forskellige ting, men kan ikke få skidtet til at virke. Hvad gør jeg galt? (er kun kommet til timeren)


<script type="text/javascript">
var hour = 0;
var min = 0;
var sec = 0;
function timer(){

    distim = (hour < 10) ? "0"+hour : hour;
    dismin = (min < 10) ? "0"+min : min;
    dissec = (sec < 10) ? "0" + sec : sec;
    document.all.tidlevel.innerText = distim + ":" + dismin + ":" + dissec;

    if ( ++sec > 59){
        sec = 0;
        if ( ++min > 59){
            min = 0;
          }
         
    document.all.tidlevel.innerText.setTimeout("timer()",1000)
}
</script>

...

<body onload="tidlevel()">

...

<td align="center" class="style6"><span id="tidlevel">00:00:00</span></td>

Hele koden findes på http://www.remiz.dk/cryptophun/cryptophun.php
Avatar billede remis Nybegynder
17. august 2008 - 15:03 #5
'<body onload="tidlevel()">' = '<body onload="timer()">'
Avatar billede olebole Juniormester
17. august 2008 - 15:17 #6
<script type="text/javascript">
function timer(){
    var oDate = new Date(),
    hour = oDate.getHours(),
    min = oDate.getMinutes(),
    sec = oDate.getSeconds(),
    distim = (hour < 10) ? "0"+hour : hour;
    dismin = (min < 10) ? "0"+min : min;
    dissec = (sec < 10) ? "0" + sec : sec;
    document.getElementById("tidlevel").firstChild.nodeValue = distim + ":" + dismin + ":" + dissec;

    if ( ++sec > 59){
        sec = 0;
        if ( ++min > 59){
            min = 0;
          }
    }   
    setTimeout("timer()",1000)
}
window.onload = function() {
    timer()
}
</script>
Avatar billede olebole Juniormester
17. august 2008 - 15:18 #7
njaahhh ... sådan:

<script type="text/javascript">
function timer(){
    var oDate = new Date(),
    hour = oDate.getHours(),
    min = oDate.getMinutes(),
    sec = oDate.getSeconds(),
    distim = (hour < 10) ? "0"+hour : hour,
    dismin = (min < 10) ? "0"+min : min,
    dissec = (sec < 10) ? "0" + sec : sec;
    document.getElementById("tidlevel").firstChild.nodeValue = distim + ":" + dismin + ":" + dissec;

    if ( ++sec > 59){
        sec = 0;
        if ( ++min > 59){
            min = 0;
          }
    }   
    setTimeout("timer()",1000)
}
window.onload = function() {
    timer()
}
</script>
Avatar billede olebole Juniormester
17. august 2008 - 15:20 #8
- og så kan du godt slette hele if-blokken, så timer funktionen bare ser sådan ud:

function timer(){
    var oDate = new Date(),
    hour = oDate.getHours(),
    min = oDate.getMinutes(),
    sec = oDate.getSeconds(),
    distim = (hour < 10) ? "0"+hour : hour,
    dismin = (min < 10) ? "0"+min : min,
    dissec = (sec < 10) ? "0" + sec : sec;
    document.getElementById("tidlevel").firstChild.nodeValue = distim + ":" + dismin + ":" + dissec;

    setTimeout("timer()",1000)
}
Avatar billede remis Nybegynder
17. august 2008 - 15:28 #9
den tæller og fungere, men den skal starte fra 00:00:00 :)
Avatar billede remis Nybegynder
17. august 2008 - 15:47 #10
tillod mig at tilføje if'erne igen :)

den her tæller op...

var
hour=0;
min=0;
sec=0;
function timer(){
    ++sec,
    distim = (hour < 10) ? "0"+hour : hour,
    dismin = (min < 10) ? "0"+min : min,
    dissec = (sec < 10) ? "0" + sec : sec;
    document.getElementById("tidlevel").firstChild.nodeValue = distim + ":" + dismin + ":" + dissec;

    setTimeout("timer()",1000)
      if ( sec > 59){
        sec = 0;

        if ( min > 59){
            min = 0;

          }
    } 
}

så er det jo egentlig bare at smide var-hour, min, sec i en cookie... tror godt jeg selv kan klare, men vender lige tilbage hvis jeg får problemer. :)
Avatar billede olebole Juniormester
17. august 2008 - 15:49 #11
Jeg tror, der er smartere måder at gøre det på, men er på vej ud af døren. Kikker måske på det senere ... hvis jeg husker det og får tid  =)
Avatar billede remis Nybegynder
17. august 2008 - 15:54 #12
olebole: det er bare i orden. tak for hjælpen indtil nu ihvertfald :)

hov, var lidt hurtig før. Det her virker...

var
hour=0;
min=0;
sec=0;
function timer(){
    ++sec,
    distim = (hour < 10) ? "0"+hour : hour,
    dismin = (min < 10) ? "0"+min : min,
    dissec = (sec < 10) ? "0" + sec : sec;
    document.getElementById("tidlevel").firstChild.nodeValue = distim + ":" + dismin + ":" + dissec;

    setTimeout("timer()",1000)
      if ( sec > 58){
        sec = -1;
        ++min;

        if ( min > 58){
            min = 0;
            ++hour;

          }
    } 
}
Avatar billede w13 Novice
19. august 2008 - 10:07 #13
var
hour=0;
min=0;
sec=0;

giver ikke mening. Det skal nok være:

var hour=min=sec=0;
Avatar billede remis Nybegynder
07. juni 2009 - 23:23 #14
Hov glemte da vist den her tråd. Sorry! Vil I ligge et svar?
Avatar billede remis Nybegynder
23. september 2009 - 21:07 #15
Blip blop
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