在每个循环的Javascript数组中为URL添加不同的随机数

时间:2015-02-10 09:17:55

标签: javascript php arrays

我尝试(没有太大成功)创建一个包含加载到iframe中的幻灯片的数组。其中一个(/ Events.php)使用PHP查询WordPress数据库并显示随机选择的1个帖子。此幻灯片需要显示不同的随机帖子每次数组循环。

我的代码就是......

<script type="text/javascript">

var frames = Array(
    'http://www.example.com/Slide01.php', 5,
    'http://www.example.com/Slide02.php', 5,
    getRandomUrl(), 5,
    'http://www.example.com/Slide04.php', 5
    );

var i = 0, len = frames.length;

function getRandomUrl()
{
    return "http://www.example.com/Events.php?=" + (new Date().getTime());
}

function ChangeSrc()
{
  if (i >= len) { i = 0; } // start over
  document.getElementById('myiframe').src = frames[i++];
  setTimeout('ChangeSrc()', (frames[i++]*1000));
}
window.onload = ChangeSrc;
</script>

唯一的麻烦是每次 /Events.php 显示它都附加了相同的数字,因此在每个循环中显示相同的帖子。

我需要在每个循环上为 /Events.php 幻灯片附加一个不同的数字,以便每次都生成不同的内容。

我开始认为我以完全错误的方式接近这一点,所以任何有关正确方向的帮助或指示都会受到赞赏!

干杯, 标记

2 个答案:

答案 0 :(得分:0)

小贴士就是你只是在打电话给getRandomUrl&#39;曾经,因此为什么它总是相同的形象。你想在每次循环时调用它。

我建议将它从静态数组中删除,并在循环中调用它 - 这有意义吗? :)

HTH

答案 1 :(得分:0)

问题是你只调用getRandomUrl()一次定义你的数组,这意味着该值总是与它只返回一次相同。

一种解决方案是将函数本身存储在数组中,如下所示:

var frames = Array(
    'http://www.example.com/Slide01.php', 5,
    'http://www.example.com/Slide02.php', 5,
    getRandomUrl, 5,
    'http://www.example.com/Slide04.php', 5
    );

然后在ChangeSrc()中调用它,如果它是一个函数

function ChangeSrc()
{
  if (i >= len) { i = 0; } // start over
    var frame = frames[i++],
        isFnc = typeof(frame) == "function";
    if(isFnc){
        frame = frame();
    }
    document.getElementById('myiframe').src = frame;
    setTimeout(function(){
        ChangeSrc()
    }, frames[i++]*1000);
}

http://jsfiddle.net/redgg6pq/