Toon posts:

[javascript] Stack overflow at line: 33

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik weet bijgod niet waar de fout zit hoor... Op mijn lokale PC doet-ie het perfect, maar op eender welke server geeft-ie de stack overflow fout.
Het gaat om een pagina die onderaan ingelade wordt (in een frame).
Ik heb deze code ergens van het net geplukt, maar ze bieden geen support of wat dan ook.
Lijn 33 bevat dit: banner();

Dit is de code:

...(vorige is allemaal nog OK)...

<SCRIPT>
// *************************
// Java moving status banner
// *************************
position = 0;

function banner()
{
var i,k;
var msg = " Foto's van Ieper - Foto's van de klasuitstap naar Ieper --- ";
var speed = 400;
k= (66 / msg.length) + 1;
for (i = 0; i <= k; i++) msg += " " + msg;
window.status = msg.substring(position, position + 90);
if (position++ == msg.length) position = 0;
id = setTimeout ("banner()",speed);
}

banner();

// ************************
</SCRIPT>

<META content="MSHTML 6.00.2800.1276" name=GENERATOR></HEAD>
<script language="JavaScript">
<!--
function greeting()
{
var today = new Date();
var hrs = today.getHours();
document.write("Goeie");
if (hrs < 12)
document.write("morgen! ");
else if (hrs <= 17)
document.write("middag! ");
else
document.write("navond! ");
}
// -->
</script>
<BODY vLink=#ff0000 link=#ffffff bgColor=#00005f>
<SCRIPT language=JavaScript src="onder_bestanden/basic.js">
</SCRIPT>

<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD>
<DIV style="LEFT: 9px; POSITION: absolute; TOP: 8px"><font color="#ffffff"
size="2" face="Verdana"><script language="JavaScript">greeting();</script></DIV></TD>
<TD width=500>
<DIV style="POSITION: absolute; TOP: 2px">
<DIV style="LEFT: 130px; POSITION: relative" align=center><FONT
color=#ffffff size=1>Voor het gebruik van deze afbeeldingen dient er
toestemming te worden gevraagd aan de eigenaar </FONT><BR><A
href="mailto:jarnodebruyn@hotmail.com"><FONT color=#ffffff size=1>Jarno
De Bruyn</A> 09.16 27/03/2004 © </FONT></DIV></DIV></TD>
<TD>
<DIV style="RIGHT: -1px; POSITION: absolute; TOP: -1px"><IMG height=30
src="onder_bestanden/hoekje2.jpg" width=30></DIV>
<DIV style="RIGHT: 40px; BOTTOM: 1px; POSITION: absolute">
</DIV></TD></TR></TBODY></TABLE>
</BODY></HTML>

  • Count
  • Registratie: Augustus 2000
  • Laatst online: 10-08-2023
Je krijgt een stackoverflow omdat de procedure banner zichzelf aanroept een daarmee een oneindige loop creërt.

Great minds think in parallel gutters.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Count schreef op 27 maart 2004 @ 22:46:
Je krijgt een stackoverflow omdat de procedure banner zichzelf aanroept een daarmee een oneindige loop creërt.
Neuh.. hij roept zichzelf aan met setTimeout. Dus dit wil alleen maar zeggen dat ie zichzelf in dit geval na 400 ms weer aanroept. Dit is in JS een hele normale manier om een doorlopende timer te creeren aangezien setInterval nogal onvoorspelbaar is.

Ik zie zo snel niks dat de overflow zou kunnen genereren. Weet je zeker dat je geen verdere includes in je code hebt?

---
Ik heb je banner functie even los in een bestand geprobeerd en die werkt inderdaad prima. Daar zit de fout dus ook niet.

JS hoort overigens wel in W&G en zet je code voortaan aub tussen code-tags.. das dan al een stuk leesbaarder ;)

[ Voor 18% gewijzigd door Bosmonster op 27-03-2004 23:39 ]


Verwijderd

Haal

id = setTimeout ("banner()",speed);

uit het script en vervang

banner() (na je functie)

met

setTimeout ("banner()", 400);

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Verwijderd schreef op 28 maart 2004 @ 00:34:
Haal

id = setTimeout ("banner()",speed);

uit het script en vervang

banner() (na je functie)

met

setTimeout ("banner()", 400);
Gelul, dat maakt geen reet uit.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Verwijderd schreef op 28 maart 2004 @ 00:34:
Haal

id = setTimeout ("banner()",speed);

uit het script en vervang

banner() (na je functie)

met

setTimeout ("banner()", 400);
Dan werkt de hele animatie niet meer :P Want dan wordt de setTimeout nog maar 1x uitgevoerd.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 10:12
Gaat het ook fout als je in plaats van 400 bijvoorbeeld 1000 gebruikt?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

* curry684 smijt over de schutting :)

Professionele website nodig?

Pagina: 1