繁体   English   中英

在每个循环中将不同的随机数附加到Javascript数组中的URL

[英]Appending Different Random Number To URL In Javascript Array On Each Loop

我正在尝试(但没有成功)创建一个数组,其中包含要加载到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幻灯片上附加一个不同的数字,以便每次生成不同的内容。

我开始认为我正在以完全错误的方式来处理此问题,因此,向正确方向提供的任何帮助或指示都将不胜感激!

干杯,马克。

提示是您只调用一次“ getRandomUrl”,因此为什么它总是相同的图像。 您想在每次循环时都调用它。

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

高温超导

问题是您仅在定义数组时调用一次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()调用它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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM