/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
hvad fejler det simple script??
Fra : linelarsen15


Dato : 23-02-02 12:03

kan i se fejlen??
den skal skrive den nye x værdi hver 5. sek.


<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>HEJ</title>
<script language=javascript>
var x = 1
function skift(){
document.write(x);
x++;
if (x == 5) {return}
setTimeout("skift()",1000)
}

</script>
</head>

<body onLoad="skift()">

</body>

</html>

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Ronni \(at\) digitre~ (23-02-2002)
Kommentar
Fra : Ronni \(at\) digitre~


Dato : 23-02-02 15:24

<html>
<head>
<title>HEJ</title>

<script language="javascript">

var x = 1;

function skift()
{
document.write(x);
x++;
if(x == 5)
{
return;
}

setTimeout(skift(),1000)
}

</script>
</head>

<body onLoad="skift()">

</body>

</html>

------------------------
Smed lidt tilfældige ; hist og her og fjernede "" i setTimeout(skift(),1000)

m v h
Ronni
rofe@mailme.dk



Lasse Reichstein Nie~ (23-02-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 23-02-02 16:09

"Ronni \(at\) digitrend.dk" <rofe@mailme.dk> writes:


> if(x == 5)
> {
> return;
> }
>
> setTimeout(skift(),1000)


Hvad forventer du det skal gøre? Hvad gør det istedet?
(de to første ting man skal skrive når man beder om hjælp :)

Du mener nok ikke "setTimeout(skift(),1000)" med "setTimeout(skift,1000)"

Hvis "return" bliver udført så bliver "setTimeout" ikke, så skift bliver
aldrig kaldt igen.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgment merely degrades the spirit divine.'

Stig Nygaard (23-02-2002)
Kommentar
Fra : Stig Nygaard


Dato : 23-02-02 16:25

Hej Ronni


Ronni (at) digitrend.dk wrote:
> Smed lidt tilfældige ; hist og her og fjernede "" i setTimeout(skift(),1000)

Duer ikke. Skal dog ikke afvise det vil virke i nogle versioner af IE
som ikke er så kræsne med hensyn til korrekt javascript (har set noget
lignende køre før i IE). Men grundlæggende er det faktisk misforstået
JavaScript som ikke burde kunne køre nogen steder.

Problemet er at document.write ikke rigtig har nogen steder at skrive
til, for dokumentet er jo færdig med at blive hentet ind på det
tidspunkt write kaldes. Det nogle IE-versioner så tilsyneladende
ukorrekt gør, er at erstatte indholdet "i sig selv" med det der skrives
med document.write. Dette skulle man jo så umiddelbart tro også ville
slette den kørende javascript-funktion, men det sker åbenbart ikke altid.

Se evt. også mit svar til Line.


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ? --> http://www.rockland.dk/stig/upghtml.html *


Stig Nygaard (23-02-2002)
Kommentar
Fra : Stig Nygaard


Dato : 23-02-02 16:18

Hej Line


linelarsen15 wrote:
> kan i se fejlen??
> den skal skrive den nye x værdi hver 5. sek.

Problemet er at din document.write skriver værdien ud i den blå luft. Du
kan *kun* bruge document.write til at opbygge siden *mens* den hentes
ind, ikke efter den er hentet ind ! (ok, der er også en måde at bruge
open/write/close funktionerne til at opdatere indholdet i en *anden*
frame/window eller i et Netscape 4.x layer, men det er næppe det du
umiddelbart vil).

Du kan i stedet gøre noget lignende følgende:

<html>
<head>
<title>HEJ</title>
<script type="text/javascript" language="javascript">
var x = 1;
function skift() {
if (!document.getElementById) return;
document.getElementById("tid").innerHTML = x;
x++;
if (x == 5) return;
setTimeout("skift();",1000);
}
</script>
</head>
<body onload="skift();">
<P id="tid"></P>
</body>
</html>

Ovenstående udskifter indholdet <P id="tid"></P> hver gang skift() kaldes.

Du kan evt. lave en løsning som bruger setInterval() i stedet
setTimeout(), det synes jeg vil være lidt mere elegant (du undgår det
rekursive kald).

Ovenstående kode skulle virke Internet Explorer 5+, Netscape 6+,
Mozilla, Konqueror, K-Meleon, Galeon, m.fl. Det vil ikke virke i
Internet Explorer 4 og Netscape 4.x, men hvis du tilføjer følgende først
i din javascript kode burde det også virke i IE4:

if (document.all && !document.getElementById)
{
document.getElementById = function(e) {return document.all[e]};
}

Netscape 4.x kræver lidt mere benarbejde, men der er også en måde (som
antydet først i dette indlæg).


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ? --> http://www.rockland.dk/stig/upghtml.html *


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste