Avatar billede groovespeak Nybegynder
20. juli 2000 - 11:35 Der er 19 kommentarer og
1 løsning

Sidst opdateret virker ikke...

Som javascript-newbie har jeg glad brugt følgende metode til at vise (troede jeg), hvornår en side sidst er opdateret:

............................
dato.js:

{
  var now = new Date();
  var mdr = new Array("januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december");

  if(now.getYear() < 1000) {aarh = 1900 + now.getYear()} else {aarh = now.getYear()};

  dato = "Sidst opdateret den "+ now.getDate() +". "+ mdr[now.getMonth()] +" "+ aarh;
}

........................
side.htm:

<head>
<script language="JavaScript" src="dato.js"></script>
</head>
<body>
<script language="JavaScript">document.write(dato)</script>
</body>

Resultatet bliver imidlertid dags dato og ikke den dag, hvor siden "side.htm" sidst er ændret. Hvad skal ændres for at det fungerer (både i IE og NN, sæ'fø'li :-)?

Jeg vil gerne bibeholde, at alt "snavset" holdes i en ekstern .js fil, som så kaldes med document.write(dato)

Avatar billede erikjacobsen Ekspert
20. juli 2000 - 11:46 #1
Det du skal bruge er document.lastModfied, der er en streng, der enten kan skrives
direkte ud (men formatet er ikke så kønt), ellers pilles fra hinanden og sættes sammen
som du ønsker det. Skal jeg - eller vil du? Eksempel: 07/20/00 09:47:20
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 11:47 #2
document.lastModified skulle jeg mene
Avatar billede groovespeak Nybegynder
20. juli 2000 - 12:10 #3
Hej Erik

document.lastModified er ganske rigtig ikke så køn, så jeg vil gerne have det pillet fra hinanden og sat sammen, så det kommer ud på formen:

Sidst opdateret den 20. juli 2000

Og øh, jeg kan ikke, så du må meget gerne... Tak :-)
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 12:23 #4
Nemt nok. Du kan vist selv klippe det ud, der skal ud i .js-filen

<html>
<head>
<title>Dato</title>
<script language="JavaScript">
var now = document.lastModified;
var mdr = new Array("januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december");

  yyy=now.substring(6,8)-0;
  mmm=now.substring(0,2)-0;
  ddd=now.substring(3,5)-0;

if(yyy < 50) {yyy = 2000 + yyy} else {yyy = 1900 + yyy};
dato = "Sidst opdateret den "+ ddd +". "+ mdr[mmm] +" "+ yyy;
</script>
</head>

<body bgcolor="#FFFFFF">
  <script language="JavaScript">document.write(dato)</script>
</body>
</html>
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 12:24 #5
PS: virker kun i intervallet 1950-2050. Stil bare et nyt spørgsmål til den tid, jeg skal
nok være her.
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 12:25 #6
Nåh, jah, hehe, der var lige én ting ;-)) Det skal nok være

mmm=now.substring(0,2)-1;

for det der array starter jo i 0....
Avatar billede groovespeak Nybegynder
20. juli 2000 - 13:04 #7
Tak for den hurtige respons... men det synes ikke rigtigt at virke. Jeg har klippet alt i <head> ud og placeret det i en ekstern .js-fil. I IE bliver resultatet:

Sidst opdateret 20. juli 2020

Det er selvfølgelig rart at være på forkant, meeen... ;-). I NN er siden bare blank. Men hvis jeg lader alt i <head> blive, så viser NN det korrekt, altså:

Sidst opdateret 20. juli 2000

IE mener dog stadig, at årstallet er 2020. Nogen gode ideer?
Avatar billede mpj Nybegynder
20. juli 2000 - 13:08 #8
kig nederst til højre i din "system bakke" og klik på uret...
Hvad er den indstillet til???
Avatar billede groovespeak Nybegynder
20. juli 2000 - 13:14 #9
>> mpj

Øhh, den viser da 20. juli 2000 (?!) Tidszonen er sat til "GMT +01.00 København..." som den skal, hvis det er det, du tænker på.
Avatar billede mpj Nybegynder
20. juli 2000 - 13:20 #10
nå... ok...
For javascript henter nemlig det derfra... så deeeeeeeet.!
;-)
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 13:22 #11
Øh, bøh, nå. Prøv lige at klippe ovenstående kode ud, og put det i sin egen .htm fil og
test den. Den virker både i IE4 og NS4.5 - naturligvis. Giver den 2020 har vi da vist et
problem... Men hvis den virker kan du så ikke lige smide dine kodestumper her, så vi
lige kan kigge dem igennem....
Avatar billede mpj Nybegynder
20. juli 2000 - 13:24 #12
jep!
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 13:25 #13
Åh, det kan være det med IE5 - måske.  Hvad skriver din browser hvis du gør

  <script language="javascript">document.write(document.lastModified)</script>

Hvis den skriver 07/20/2000 og et tidspunkt er det jo forklaringen. Der var vist noget om det
her engang. Det kan sagtens klares. Men fortæl os det lige.
Avatar billede mpj Nybegynder
20. juli 2000 - 13:25 #14
nam.... Ihhhh Slurp!
NAMNAM!
Kodestumper..... Ahhhh!
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 13:27 #15
Løsningen er simpel, hvis det er problemet:

<html>
<head>
<title>Dato</title>
<script language="JavaScript">
var now = document.lastModified;
var mdr = new Array("januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december");

  yyy=parseInt(now.substring(6,10),10);
  mmm=now.substring(0,2)-0;
  ddd=now.substring(3,5)-0;

  if (yyy < 100) {
    if(yyy < 50) {yyy = 2000 + yyy} else {yyy = 1900 + yyy};
  }
dato = "Sidst opdateret den "+ ddd +". "+ mdr[mmm] +" "+ yyy;
</script>
</head>

<body bgcolor="#FFFFFF">
  <script language="JavaScript">document.write(dato)</script>
</body>
</html>
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 13:29 #16
og igen naturligvis

mmm=now.substring(0,2)-1;
Avatar billede groovespeak Nybegynder
20. juli 2000 - 14:20 #17
>> erikjacobsen

Heeyy, nu kører det. Fornemt, tak! Selvom der ikke er mere, der skal pilles ved, har jeg sat den endelige, opklippede kode ind nedenfor, da der blev sagt 'slurp' til kodestumper ;-)

............................
dato.js:


var now = document.lastModified;
var mdr = new Array("januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december");

  yyy=parseInt(now.substring(6,10),10);
  mmm=now.substring(0,2)-1;
  ddd=now.substring(3,5)-0;

  if (yyy < 100) {
    if(yyy < 50) {yyy = 2000 + yyy} else {yyy = 1900 + yyy};
  }
dato = "Sidst opdateret den "+ ddd +". "+ mdr[mmm] +" "+ yyy;

.........................
side.htm:

<html>
<head>
<title>Sidst opdateret</title>
<script language="JavaScript" src="dato.js"></script>
</head>

<body bgcolor="#FFFFFF">
<script language="JavaScript">document.write(dato)</script>
</body>
</html>

Ja, det er der jo altså ikke meget trylleri i, når alt arbejdet er gjort. Men nu er det lige til at klippe.

Og så dagens dumme tillægsspørgsmål: Hvis man nu vil give mere end 60 point for et svar, hvordan gør man så det?
Avatar billede groovespeak Nybegynder
20. juli 2000 - 14:24 #18
Hov, jeg kan se, jeg fik accepteret den forkerte udgave af dit svar. Hvis nogen skal bruge scriptet, er det altså den umiddelbart ovenstående version med mmm=now.substring(0,2)-1; etc., der virker.
Avatar billede erikjacobsen Ekspert
20. juli 2000 - 14:56 #19
Du kan ikke gøre andet, groovespeak. Folk der ikke bladrer ned til bunden, kan vi
ikke rigtig tage os af. Ja, fint du kommer med det endelige resultat.

Dit tillægsspørgsmål må vi hellere få en anden til at kigge på - jeg kan ikke huske det.
Avatar billede mpj Nybegynder
21. juli 2000 - 12:27 #20
det kan du ikke hvis det er dit første op til tredje spørgsmål...
Ellers klikker du på pointtallet oppe i toppen...
(>>60<< point fra groovespeak)
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