Jump to content

Archived

This topic is now archived and is closed to further replies.

rawb

setTimeout help!

Recommended Posts

Hello! I have a script written to change the information in a div every few seconds (via innerhtml), but for some reason it keeps giving me a "Stack overflow at line: 33" error. I really don't know what this means and could use some help.. if anyone could tell me what is wrong here I would appreciate it a lot. It's probably something really dumb and simple but I just need a fresh pair of eyes to look it over. Thanks in advance!

Oh.. the onClick buttons work like a charm, so there's nothing wrong with the 'tick' function.. I think...

[code]
<script>

//create two parallel arrays
imagearray = new Array(3);
textarray = new Array(3);

imagearray[0] = "corporate.gif";
imagearray[1] = "hosting.gif";
imagearray[2] = "community.gif";

textarray[0] = "corp";
textarray[1] = "host";
textarray[2] = "commute?";



function tick(newimage, newtext, div) {
//takes three string arguments, div being a reference to the div to be changed

var replacement = "image: " + newimage + "<br>text: " + newtext + "<br>";

document.getElementById(div).innerHTML = replacement;

}



function changediv(imagearray, textarray, i) {
//takes two array arguments and one number (the number in the parallel arrays on which to begin)


//change the image!
tick(imagearray[i], textarray[i], 'change');

//calculate the next number in the array, or start over...
i++;
if (i >= imagearray.length) {
  i = 0;
}

// call this function again with a new number after so many seconds...
setTimeout(changediv(imagearray, textarray, i), 2000);

}

</SCRIPT>

<body onLoad="changediv(imagearray, textarray, 2);">

<a href=# onclick="tick(imagearray[1], textarray[1], 'change'); return false;">test</a>
<a href=# onclick="tick(imagearray[2], textarray[2], 'change'); return false;">test2</a>

<div id="change">


image: none<br>
text: none<br>


</div>
[/code]

By the way, these are lines 32 and 33 (it says the 'stack overflow' error is on 33).

[code]
//change the image!
tick(imagearray[i], textarray[i], 'change');
[/code]

Share this post


Link to post
Share on other sites
The error happens because you are calling the script in the setTimeout instead of using a string type.

All you need is to change your setTimeout like this
[code]
setTimeout("changediv(imagearray, textarray, "+i+")", 2000);
[/code]

Share this post


Link to post
Share on other sites
[!--quoteo(post=387318:date=Jun 23 2006, 06:56 PM:name=nogray)--][div class=\'quotetop\']QUOTE(nogray @ Jun 23 2006, 06:56 PM) [snapback]387318[/snapback][/div][div class=\'quotemain\'][!--quotec--]
The error happens because you are calling the script in the setTimeout instead of using a string type.

All you need is to change your setTimeout like this
[code]
setTimeout("changediv(imagearray, textarray, "+i+")", 2000);
[/code]
[/quote]


Works like a charm. Thanks a million man, I really appreciate it.

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.