如何在不同时间创建Javascript横幅切换图片?

时间:2012-01-24 19:35:19

标签: javascript html advertising banner banner-ads

我有一张横幅,里面有10张照片。我知道如何设置超时,以便图片每隔一定时间切换一次,但我怎样才能设置一个计时器来根据我想要显示个性化图片的时间来更改图片。

例如: 我希望picture1显示10秒,picture2显示3秒,picture3显示15秒。

到目前为止,这是我的代码:(以5秒的相等间隔更改所有图像。

使用Javascript:

        window.onload = rotate;        
         var thisAd = 0;        
         var adImages = new Array("Images1/Picture10","Images1/Picture1","Images1  /Picture2","Images1/Picture3","Images1/Picture4","Images1/Picture5","Images1/Picture6","Images1/Picture7","Images1/Picture8","Images1/Picture9");

function rotate(){              
          thisAd++;
          if(thisAd == adImages.lengh){
            thisAd = 0;
          }     
          document.getElementById("adBanner").src = adImages[thisAd];       
          setTimeout(rotate, 5 * 1000);
}

3 个答案:

答案 0 :(得分:2)

您可以将图片存储到具有两个属性的对象中:一个用于URL,另一个用于延迟,然后使用它。

var adImages = [
    {
        url:"img1.png",
        delay: 5
    },
    {
        url:"img2.png",
        delay: 3
    }
];

然后您可以使用这些属性:

var image = adImages[thisAd];
document.getElementById("adBanner").src = image.url;
setTimeout(rotate, image.delay * 1000);

答案 1 :(得分:1)

制作一个与您的图像匹配的时间数组。:

var adTimes = new Array(1000,5000,2000.....)

使用计时器中的值

setTimeout(rotate, 5 * adTimes[thisAd]);

答案 2 :(得分:0)

由于您的计时没有逻辑,因此无法创建通用算法。所以你必须为每个广告做一个切换/否则 您还必须在一个周期后重置计数器thisAd

var time;
if(thisAd>9)thisAd=0;
if(thisAd==0)time=10;
else if(thisAd==1)time=3;
else if(thisAd==2)time=15;
...
setTimeout(rotate, time * 1000);