0

该脚本有效,它加载到我的图像中。

我希望它在 10 秒后加载新图像,当我尝试这个时,它对我做错了什么没有任何建议?

    <?php header("Refresh: 5; URL=mytestfile.php"); ?>
<div style="width: 964px;">
<div style="float: left; width: 240px;">
<?php $mybanners[1] = '<a href="/chiropractor/"><img src="banners/chiropractor.jpg"></a>';
$mybanners[2] = '<a href="/chiropodist/"><img src="banners/chiropody.jpg"></a>';
$mybanners[3] = '<a href="/fitness-instructor/"><img src="banners/fitness ball.jpg"></a>';
$mybanners[4] = '<a href="/dietician/"><img src="banners/Dietician.jpg"></a>';
$mybanners[5] = '<a href="/alexander-technique/"><img src="banners/Alexander technique.jpg"></a>';

$id = rand(1,5);

echo $mybanners[$id]; 

// this is the section I tried to control the delay

$mybanners = 0;
for($i=0; $i<10000; $i++){
if($i=='10000'){
    $mybanners++;
    $i = 0;
    }
    if($mybanners=='10'){
    $mybanners=0;
 }

}?>
4

2 回答 2

0

您无法通过 PHP 控制它,这是一个 Javascript 用例。for不是与时间相关的控件:http : //php.net/manual/en/control-structures.for.php

你应该有一个 Javascript 中的图像列表:

var myImages = [
  '<a href="/chiropractor/"><img src="banners/chiropractor.jpg"></a>',
  '<a href="/chiropractor/"><img src="banners/chiropractor.jpg"></a>',
  '<a href="/chiropractor/"><img src="banners/chiropractor.jpg"></a>',
  '<a href="/chiropractor/"><img src="banners/chiropractor.jpg"></a>',
];

(当然你可以用 PHP 生成这个列表)

然后,每 10 秒,对它做一些事情:

var i = 0;
window.setInterval(function() {
  alert(myImages[i]);
  i++;
, 10000}

PHP如果用于生成页面,则在将页面提供给客户端后它无能为力。

于 2013-01-16T12:11:00.330 回答
0

如果您尝试使用 Refresh 标头循环,则不需要循环。
此外,数到 10000 不需要 10 秒。而且您正在使用以前的 urls 数组作为索引...简而言之,再次构建它。

如果要在浏览器中旋转它们,请使 urls 列表对 javascript 可用。

编辑:添加示例

1) 使 url 可用于 javascript:

在 php 中,您输出 javascript:

echo "<script>";
echo "var urlList = new Array();";
foreach ($urls as $url)
  echo "urlList[urlList.length]='$url';";

2) 旋转它们这是每 5 秒运行一次函数的基本结构:

setTimeout(function() {}, 5000);

您需要找出一种方法来进行旋转:要么为数组的索引保留一个计数器,要么尝试随机:

setTimeout(function() {
  var index = Math.round(Math.rand * urlList.length);
  document.getElementById('#myimg').src.href=urlList[index];
}, 5000);

注意:我在这里编写这段代码,它没有经过测试,但它应该足以让你继续前进。一旦你开始了,考虑使用一些 jQuery.fade 过渡。

于 2013-01-16T12:28:50.247 回答