2016-02-29 96 views
0

我想在多个div上重复使用图像交换函数,但函数未确认var rotator = getelementbyid(adbox)上的adbox变量。JavaScript中的getelementbyid变量不起作用

window.onload = animatez(animate);

animatez函数应该将“animate”作为div id传递给函数内的getelementbyid。

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>

+0

你为什么要重新声明,即使你是把它当作一个参数adbox?删除var adbox;然后再试一次。 –

回答

0

,为什么你有adbox变种定义了两次?一旦在function animatez(adbox) {,再次在var adbox ......?

1

window.onload需要设置为等于一个函数,而不是调用你的animatez函数的结果。你可以做这样的事情。

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

另请注意,您需要将字符串传递给您的animatez函数,以便引用动画。

编辑:像其他答案一样,你也应该删除 var adbox; 行在你的功能。

+0

谢谢我修复了代码,仍在学习javascript,为什么在调用窗口加载之前animatez函数必须被封装在另一个函数中? – Lid

+0

window.onload允许您指定一个函数,当窗口加载完成时将调用该函数。它需要被设置为等于一个函数引用。这可以像在我的例子中一样内联定义,或者是一个像'window.onload = myFunction'这样的命名函数,不需要括号直接调用函数。 –

+1

您也无法定义传递给onload函数的参数。这将始终是事件对象。用另一个函数包装你的animatez函数可以传递你想要的参数。 –