Avatar billede elohim Nybegynder
01. februar 2001 - 16:49 Der er 17 kommentarer og
1 løsning

Hvorfor f... virker det ikke

Jeg vil gerne have opdateret uret uden at bruge en Meta
Det virker hver for sig men ikke sammen.
Det jeg roder med er
\"window.setTimeout(\"Beregndato()\",1000)\"
i nedenstående

<HTML>
<HEAD>

<TITLE>JAVA FRA IB</TITLE>

<SCRIPT language=\"JavaScript\">
document.bgColor =\"Black\"
document.fgColor =\"White\"

dato = new Date()
dag0 = \"Søndag    \"
dag1 = \"Mandag    \"
dag2 = \"Tirsdag  \"
dag3 = \"Onsdag    \"
dag4 = \"Torsdag  \"
dag5 = \"Fredag    \"
dag6 = \"Lørdag    \"
dagstreng = dag0 + dag1 + dag2 + dag3 + dag4 + dag5 + dag6

maan00 = \"januar    \"
maan01 = \"februar  \"
maan02 = \"marts    \"
maan03 = \"april    \"
maan04 = \"maj      \"
maan05 = \"juni      \"
maan06 = \"juli      \"
maan07 = \"august    \"
maan08 = \"september \"
maan09 = \"oktober  \"
maan10 = \"november  \"
maan11 = \"december  \"
maanstreng = maan00 + maan01 + maan02 + maan03 + maan04 + maan05 + maan06 + maan07 + maan08 + maan09 + maan10 + maan11


datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"

datostreng += dato.getDate() + \".\"
datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
datostreng += dato.getYear() + \" kl. \"
datostreng += dato.getHours() + \".\"
if (dato.getMinutes() <= 9)
datostreng += \"0\" + dato.getMinutes()
else
datostreng += dato.getMinutes()
//document.write(\"<P>Den aktuelle tid \" + datostreng)


function Beregndato() {
    document.Formular.Tekst1.value = (datostreng)
    window.setTimeout(\"Beregndato()\",1000)
}




</SCRIPT>

</HEAD>

<BODY>
<SCRIPT language=\"JavaScript\">
<!--
    document.write(\'<Form Name=Formular>\')
    document.write(\'<input type=text size=50 name=Tekst1 value=\"start\">\')
    document.write(\'</Form>\')
Beregndato()

//-->
</script>

</BODY>

</HTML>
Avatar billede syscom Nybegynder
01. februar 2001 - 17:20 #1
brug window.setTimeout(\'Beregndato()\',1000)

Avatar billede syscom Nybegynder
01. februar 2001 - 17:20 #2
altså

function Beregndato() {
    document.Formular.Tekst1.value = (datostreng)
    window.setTimeout(\'Beregndato()\',1000)
}




Avatar billede jakoba Nybegynder
01. februar 2001 - 17:26 #3
Det ser ud som datostreng bliver beregnet een gang og aldrig mere. For at uret kan vise forskellige tider skal den beregnes igen og igen. Fx ved at gøre beregningen af strengen til en funktion der kan kaldes hver gang du vil opdatere uret:

function hent_datostreng() {
  datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"
  datostreng += dato.getDate() + \".\"
  datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
  datostreng += dato.getYear() + \" kl. \";
  datostreng += dato.getHours() + \".\" ;
  if (dato.getMinutes() <= 9)
    datostreng += \"0\" + dato.getMinutes()
  else
    datostreng += dato.getMinutes();
  return datostreng;
};

og så ændre første linie i beregndato() :
    document.Formular.Tekst1.value = hent_datostreng();
Avatar billede elohim Nybegynder
01. februar 2001 - 17:27 #4
Ja det er jo det jeg gør, men den vil ikke opdatere tiden.
Hvad gør jeg forkert, har det noget at gøre med at jeg konverter datoen til DK. Det virker hver for sig men ikke sammen
Avatar billede jakoba Nybegynder
01. februar 2001 - 17:41 #5
Jeg insisterer. din opbygning af variablen datostreng sker kun EEN gang i den kode du viser. Den vil ikke ske igen medmindre siden bliver reloaded (som den blev med meta-tag).
Når du vil undgå det grimme reload blink må du selv sørge for at koden bliver udført igen. fx ved at gøre koden til en funktion du kan kalde.

mvh JakobA
Avatar billede elohim Nybegynder
01. februar 2001 - 17:42 #6
jokoba Den virker ikke jeg får Hent_datostreng etc. i Formen
Avatar billede jakoba Nybegynder
01. februar 2001 - 17:47 #7
Har du stavet korrekt, samme store og små bogstaver?
Både i javascripten og name= parametren til formen?

vis evt hvordan din kode ser ud nu.
Avatar billede elohim Nybegynder
01. februar 2001 - 17:59 #8
Nu får jeg en \"Undefine\"
Min kode sådan ud

<HTML>
<HEAD>

<TITLE>JAVA FRA IB</TITLE>

<SCRIPT language=\"JavaScript\">
document.bgColor =\"Black\"
document.fgColor =\"White\"

dato = new Date()
dag0 = \"Søndag    \"
dag1 = \"Mandag    \"
dag2 = \"Tirsdag  \"
dag3 = \"Onsdag    \"
dag4 = \"Torsdag  \"
dag5 = \"Fredag    \"
dag6 = \"Lørdag    \"
dagstreng = dag0 + dag1 + dag2 + dag3 + dag4 + dag5 + dag6

maan00 = \"januar    \"
maan01 = \"februar  \"
maan02 = \"marts    \"
maan03 = \"april    \"
maan04 = \"maj      \"
maan05 = \"juni      \"
maan06 = \"juli      \"
maan07 = \"august    \"
maan08 = \"september \"
maan09 = \"oktober  \"
maan10 = \"november  \"
maan11 = \"december  \"
maanstreng = maan00 + maan01 + maan02 + maan03 + maan04 + maan05 + maan06 + maan07 + maan08 + maan09 + maan10 + maan11


function hent_datostreng() {
datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"

datostreng += dato.getDate() + \".\"
datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
datostreng += dato.getYear() + \" kl. \"
datostreng += dato.getHours() + \".\"
if (dato.getMinutes() <= 9)
datostreng += \"0\" + dato.getMinutes()
else
datostreng += dato.getMinutes()

}

function Beregndato() {
    document.Formular.Tekst1.value = hent_datostreng()
    window.setTimeout(\"Beregndato()\",1000)
}



</SCRIPT>

</HEAD>

<BODY>
<SCRIPT language=\"JavaScript\">
<!--
    document.write(\'<Form Name=Formular>\')
    document.write(\'<input type=text size=150 name=Tekst1 value=\"start\">\')
    document.write(\'</Form>\')
Beregndato()

//-->
</script>

</BODY>

</HTML>
Avatar billede elohim Nybegynder
01. februar 2001 - 18:07 #9
OK jeg havde glemt \"return datostreng\"
Men den opdater ikke tiden endnu, men jeg har får tiden frem igen nu, kan det have noget at gøre med de 1000 i beregndato
Tak for udholdenheden ;-))
Avatar billede jakoba Nybegynder
01. februar 2001 - 18:10 #10
Jeg har markeret steder hvor der bør rettes
>1>  afslut den linie med semikolon:  ;
>2>  indføj i linien:          return datostreng;
>3>  citationstegn omkring tekstattributter:      name=\"Formular\"
>4>  ligesom >3>:            type=\"text\"  name=\"Tekst1\"
3 og 4 er mest af hensyn til ældre browsere, de nyeste kan som regel klare sig uden.

                  function hent_datostreng() {
                  datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"

                  datostreng += dato.getDate() + \".\"
                  datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
                  datostreng += dato.getYear() + \" kl. \"
                  datostreng += dato.getHours() + \".\"
                  if (dato.getMinutes() <= 9)
                  datostreng += \"0\" + dato.getMinutes()
                  else
>1>                datostreng += dato.getMinutes()
>2>
                  }

                  function Beregndato() {
                      document.Formular.Tekst1.value = hent_datostreng()
                      window.setTimeout(\"Beregndato()\",1000)
                  }



                  </SCRIPT>

                  </HEAD>

                  <BODY>
                  <SCRIPT language=\"JavaScript\">
                  <!--
>3>                  document.write(\'<Form Name=Formular>\')
>4>                  document.write(\'<input type=text size=150 name=Tekst1 value=\"start\">\')
                      document.write(\'</Form>\')
                  Beregndato()

                  //-->
                  </script>
Avatar billede jakoba Nybegynder
01. februar 2001 - 18:15 #11
Det kan evt have lidt at gøre med linien:
                    window.setTimeout(\"Beregndato()\",1000)
jeg tror (ikke sikker) at setTimeout() er global, det vil sige ikke knyttet til noget objekt, prøv med
                    setTimeout(\"Beregndato()\",1000)

mvh JakobA
Avatar billede elohim Nybegynder
01. februar 2001 - 18:21 #12
Nu ser koden sådan ud, virker den ved dig eller er det nødvendigt at den skal ligge på nettet ??

Koden

<HTML>
<HEAD>

<TITLE>JAVA FRA IB</TITLE>

<SCRIPT language=\"JavaScript\">
document.bgColor =\"Black\"
document.fgColor =\"White\"

dato = new Date()
dag0 = \"Søndag    \"
dag1 = \"Mandag    \"
dag2 = \"Tirsdag  \"
dag3 = \"Onsdag    \"
dag4 = \"Torsdag  \"
dag5 = \"Fredag    \"
dag6 = \"Lørdag    \"
dagstreng = dag0 + dag1 + dag2 + dag3 + dag4 + dag5 + dag6

maan00 = \"januar    \"
maan01 = \"februar  \"
maan02 = \"marts    \"
maan03 = \"april    \"
maan04 = \"maj      \"
maan05 = \"juni      \"
maan06 = \"juli      \"
maan07 = \"august    \"
maan08 = \"september \"
maan09 = \"oktober  \"
maan10 = \"november  \"
maan11 = \"december  \"
maanstreng = maan00 + maan01 + maan02 + maan03 + maan04 + maan05 + maan06 + maan07 + maan08 + maan09 + maan10 + maan11


function hent_datostreng() {
  datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"
  datostreng += dato.getDate() + \".\"
  datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
  datostreng += dato.getYear() + \" kl. \"
  datostreng += dato.getHours() + \".\"
  if (dato.getMinutes() <= 9)
    datostreng += \"0\" + dato.getMinutes()
  else
    datostreng += dato.getMinutes();
  return datostreng;

   

}


function Beregndato() {
document.Formular.Tekst1.value = hent_datostreng()
    window.setTimeout(\"Beregndato()\",1000)

}



</SCRIPT>

</HEAD>

<BODY>
<SCRIPT language=\"JavaScript\">
<!--
    document.write(\'<Form Name=\"Formular\">\')
    document.write(\'<input type=\"text\" size=50 name=\"Tekst1\" value=\"start\">\')
    document.write(\'</Form>\')
Beregndato()
//-->
</script>

</BODY>

</HTML>
Avatar billede jakoba Nybegynder
01. februar 2001 - 18:22 #13
Ah jo,

lav en ny variabel:

var timeHandle = 0;

lige foran (udenfor) funktionen Beregndato(). og skriv anden linie som:
                    timeHandle = window.setTimeout(\"Beregndato()\",1000)

window er med igen. setTimeout er IKKE global og bor i window.

mvh JakobA
Avatar billede jakoba Nybegynder
01. februar 2001 - 18:25 #14
Det ser ellers helt fint ud og bør virke, også uden at være loaded til server.
Avatar billede elohim Nybegynder
01. februar 2001 - 18:40 #15
OK, det virker ikke sorry, nu ser koden sådan ud
Kan det have noget at gøre med Date, Jeg har kombineret to eksempler, en der konverter US dato/tid til DK dato/tid
Der bruges en Date istedetfor f.eks. Hent_datostreng

maanstreng = maan00 + maan01 + maan02 + maan03 + maan04 + maan05 + maan06 + maan07 + maan08 + maan09 + maan10 + maan11

Udpluk af koden

function hent_datostreng() {
  datostreng = dagstreng.substring(dato.getDay() * 10,dato.getDay() * 10 + 10) + \" den \"
  datostreng += dato.getDate() + \".\"
  datostreng += maanstreng.substring(dato.getMonth() * 10,dato.getMonth() * 10 + 10)
  datostreng += dato.getYear() + \" kl. \"
  datostreng += dato.getHours() + \".\"
  if (dato.getMinutes() <= 9)
    datostreng += \"0\" + dato.getMinutes()
  else
    datostreng += dato.getMinutes();
  return datostreng;
}

var timeHandle = 0;


function Beregndato() {

document.Formular.Tekst1.value = hent_datostreng()
timeHandle = window.setTimeout(\"Beregndato()\",1000)
}


</SCRIPT>
Avatar billede elohim Nybegynder
01. februar 2001 - 18:43 #16
Du får poingene for god insats, hvis du skulle løbe over et svar der virker, kan du maile mig på Ib@Branel.dk
Avatar billede elohim Nybegynder
01. februar 2001 - 18:57 #17
Med denne kode virker det med opdatering, så jeg har en mistanke om at det har noget at gøre med functionen Hent_datostreng eller datostreng

Kode

function Beregndato() {

document.Formular.Tekst1.value = Date()
window.setTimeout(\"Beregndato()\",1000)
}


</SCRIPT>
Avatar billede jakoba Nybegynder
01. februar 2001 - 19:13 #18
Tak for points. 
Og det var forresten det der skulle til. det eneste sted Date ellers bliver kaldt er helt oppe foran ugedagenes navne.
den linie:
  dato = new Date()
skal flyttes in forrest i funktionen hent_datostreng.

mvh JakobA
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