我正在我的一个页面上实现图像旋转器,但是我想在其他两个页面上重新使用该代码。我还希望每个页面以不同的顺序将图像旋转到其他页面。我认为这是通过声明不同的数组并使用唯一ID来调用它们。
代码如下
var ImageArr1 = new Array("/assets/function.jpg","assets/takeaway.jpg","/assets /delivery.jpg");
var ImageHolder1 = document.getElementById('Rotating1');
var ImageArr2 = new Array("/assets/takeaway.jpg","/assets/function.jpg","/assets/delivery.jpg");
var ImageHolder2 = document.getElementById('Rotating2');
function RotateImages(whichHolder,Start)
{
var a = eval("ImageArr"+whichHolder);
var b = eval("ImageHolder"+whichHolder);
if(Start>=a.length)
Start=0;
b.src = a[Start];
window.setTimeout("RotateImages("+whichHolder+","+(Start+1)+")",3000);
}
RotateImages(1,0);
RotateImages(2,0);
我的HTML如下 - Page1
<img src="/assets/function.jpg" name="Rotating" id="Rotating1" width="260" height="180" alt="">
第2页
<img src="/assets/takeaway.jpg" name="Rotating" id="Rotating2" width="260" height="180" alt="">
我正在慢慢学习Javascript,但这让我感到难过
任何帮助表示赞赏
答案 0 :(得分:1)
你遇到的问题实际上是一个错误。通过调用b.src,您断言b已定义但您的ImageHolder可能不在那里。特别是通过调用RotateImage(第1页上的2 ...或第2页上的RotateImage(1 ...)。
你可能尝试的第一件事就是从大脑中移除eval。你可以简单地使用窗口[“ImageArr”+ whichHolder],它会好得多。
接下来,用
替换你的函数的结尾(最后两行)if(b) {
b.src = a[Start];
window.setTimeout("RotateImages("+whichHolder+", "+(Start+1)+")", 3000);
}
接下来,您可以学习使用函数而不是字符串调用setTimeout:
window.setTimeout(function() {
RotateImages(whichHolder, Start+1);
}, 3000);
最后,它是更多的代码约定,经典变量和函数没有首字母大写。所以它可能是rotateImages并开始。