如何在JavaScript中旋转iFrame中的URL

时间:2015-12-24 15:41:37

标签: javascript jquery

我有2个数组(我从XML文件中读取):

  • urls包含网址
  • durations包含表示秒数的整数

我想遍历这些数组(到达终点时再次从0开始),以便在iFrame中显示:

    {li> urls[0].innerHTML durations[0]秒 {li> urls[1].innerHTML durations[1]秒 {li> urls[2].innerHTML durations[2]

等...

为此,我有以下代码:

while (i <= len) {
    $j('.marquee').attr('src',urls[i].innerHTML);
    setTimeout(function(){
        i++;
        if (i >= len) {i = 0;} 
    },parseInt(duration[i].innerHTML) * 1000);
}

然后我意识到,在它到达第一个超时之前,它将在循环中运行一百万次以调用该函数并增加i

所以我想暂停代码,但我立即看到许多stackoverflow问题,这样做是一个非常糟糕的主意。

所以问题是,我该怎么做?

作为奖励问题......我应该在哪些网址之间使用fadeIn()和/或fadeOut()?

1 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案:

var i = 0;
(function step(){
    $j('.marquee').attr('src',urls[i].innerHTML);
    i = (i+1)%len;
    setTimeout(step, parseInt(duration[i].innerHTML) * 1000);
})();

请注意,没有明确的循环。一次只编程一次超时。

如果你想添加fadein和fadeout,你必须在不同的帧(可能在同一位置)加载源并淡化它们。