Lid
Lid

Reputation: 115

variable inside getelementbyid in javascript not working

I want to reuse an image swap function on multiple divs, but the function is not acknowledging the adbox variable on the var rotator = getelementbyid(adbox).

window.onload = animatez(animate);

the animatez function should pass "animate" which is the div id to getelementbyid inside the function.

function animatez(adbox) {
var adbox;
var rotator = document.getElementById(adbox); 
var images = rotator.getElementsByTagName("img");
var counter = 1;
setInterval(function () {
for (var i = 0; i < images.length; i++) {
images[i].style.display = "none"; }
images[counter].style.display = "block";
counter++;
if (counter == images.length) {
counter = 0;}
            }, 1000);
};
window.onload = animatez(animate);
<style>
#animate { width:200px; height:200px; background-color:transparent;
margin:auto; position:absolute;
} 

img {width:200px; height:200px; display:none;}
</style>
<body>
<div id="animate">
<img src="surveyfunny.png">
<img src="myanswertoasurveyquestion.png">
<img src="funny-wheredoyoulive.png">
<img src="funnysurveyquestion2.png">
<img src="funnysurveyquestion.png">
</div>

Upvotes: 0

Views: 286

Answers (2)

Pengcheng
Pengcheng

Reputation: 323

You need give the function a string parameter. Without quote the animate is undefined, javascript throw the error.

see https://jsfiddle.net/pconline2046/u5cbwpuL/3/#

window.onload = function(){
    animatez('animate');
};

Upvotes: 1

Matt Dyer
Matt Dyer

Reputation: 126

window.onload needs to be set equal to a function, not the result of calling your animatez function. You could do something like this.

window.onload = function(){
    animatez('animate');
};

Also notice that you need to pass a string to your animatez function so I have quoted animate.

Edit: Like some other answers have stated you also should remove the var adbox; line in your function.

Upvotes: 1

Related Questions