JS Array with timeout not working correctly
I want this array to write hello wait 1 second and write world wait a second and write !. but it doesn't do that what am i missing.
Code:
<script language="javascript">
var myArr = new Array();
myArr[0] = "Hello";
myArr[1] = "World";
myArr[2] = "!";
function wait(){
timeout = setTimeout(function(){test()}, 1000);//waits 1 second 10000 = 10 seconds
}
function test(){
window.clearTimeout(timeout);
for (i=0; i < myArr.length; i++){
console.log(myArr);
alert(myArr[i]);
wait();
}
}
test();
</script>
Every time you call the function test, your variable is RE initialized to zero. You either need to use a global variable outside the function, or don't use a loop at all, and use set interval instead of set timeout.
thanks Jpnyc, I got it working with alert, however, when i change it to write to a particular div it will write once and stop unless i put the alert at the beginning of the loop.
Code:
function feat() {
window.clearTimeout(timeout);
for (var i=0; i < bNameArray.length; i++)
{
alert(bNameArray[i]);
document.getElementById("fName").innerHTML= bNameArray[i] + "<br>";
if(logoArray[i] != '') {
document.getElementById("fLogo").innerHTML= "<img src='http://www.westbywi.com/images/featuredBus/" + logoArray[i] + "' width='180px'>";
} else {
document.getElementById("fLogo").innerHTML= "";
}
document.getElementById("fDesc").innerHTML=descriptionArray[i] + "<br>";
if(cNameArray[i] != '') {
document.getElementById("fCname").innerHTML=cNameArray[i];
} else {
document.getElementById("fCname").innerHTML="";
}
document.getElementById("fAddress").innerHTML=addressArray[i] + "<br>" + cityArray[i] + ", " + stateArray[i] +" "+ zipArray[i];
document.getElementById("fPhone").innerHTML="Phone: " + phoneArray[i];
if(emailArray[i] != '') {
document.getElementById("fEmail").innerHTML= "<a href='mailto:" + emailArray[i] + "'>Email Us</a>";
} else {
document.getElementById("fEmail").innerHTML= "";
}
if(urlArray[i] != '') {
document.getElementById("fUrl").innerHTML= "<a href='" + urlArray[i] + "' target='_blank'>" + urlArray[i] + "</a>" ;
} else {
document.getElementById("fUrl").innerHTML= "" ;
}
}
}
feat();
Here is the link so you can see the entire page. http://www.westbywi.com/test3.php
why would putting the alert let it cycle through correctly and show only once without it?
I know how to move the pointer back to the beginning of an array in php but not JS. if i change the
Code:
for (var i=0; i < bNameArray.length; i++)
to
Code:
for (var i=0; i <( bNameArray.length*3); i++)
it gives me an undefined after it reaches the end of the array. how do i reset the array to the 0 position?
Thanks again.
Originally Posted by
kaiser0427
I want this array to write hello wait 1 second and write world wait a second and write !.........
html file
HTML Code:
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="utf-8" >
<title> hello world !</title>
<script src="hw.js" > </script>
</head>
<body>
<p id="here" > </p>
</body>
</html>
save file as hw.js or change html to suit
Code:
var hwArr = (function () {
var myArr, index, here;
function test() {
var str = '',
i;
if (index < 4) {
for (i = 0; i < index; i += 1) {
str += myArr[i] + ' ';
}
index += 1;
here.innerHTML = str;
setTimeout(function () {test(); }, 1000);
}
}
function initAll() {
myArr = ['Hello', 'World', '!'];
index = 1;
here = document.getElementById('here');
test();
}
return ({
start: initAll
});
}());
window.onload = function () {
hwArr.start();
};
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Bookmarks