2014-10-29 39 views
0

我已经有了这段PHP代码,它将一个目录下的图像加载出来,并一次把所有的东西扔到页面上。我想知道如何添加一个接一个地加载图像的功能,而不是一次加载它们。使用PHP一个接一个地加载图像。

$path = "images/page1/"; 

if (is_dir($path)){ 
    $handle = opendir($path); 
} 
else{ 
    echo 'No image directory'; 
} 

$directoryfiles = array(); 
while (($file = readdir($handle)) !== false) { 
    $newfile = str_replace(' ', '_', $file); 
    rename($path . $file, $path . $newfile); 
    $directoryfiles[] = $newfile; 
} 

echo '<table>'; 
foreach($directoryfiles as $directoryfile){ 
     if(strlen($directoryfile) > 3){ 
     echo '<tr><td> <img src="'.$path.$directoryfile.'"/>'; 
     echo '<br>'.$path.$directoryfile.'</td></tr>'; 
     } 
    } 
echo '</table>'; 

closedir($handle); 

谢谢。

+0

这段代码只是一个简单的程序化PHP脚本。它按顺序处理所有文件。一个接一个地。我想你想要加载的图像间隔,你需要使用JavaScript – 2014-10-29 14:08:54

+1

你不能用PHP做到这一点。您将不得不使用CSS动画,JavaScript或两者的组合。谷歌搜索“jQuery图像循环”会给你很多非常好的例子,如何实现这个 – rjdown 2014-10-29 14:10:12

+0

你在谈论一个图像滑块时,图像一次显示一个,不断变化或你自己改变它们? – 2014-10-29 14:36:41

回答

-1

这可能会为你工作:

echo '<table>'; 
$delay=250; 
foreach($directoryfiles as $directoryfile){ 
     if(strlen($directoryfile) > 3){ 
      echo '<tr><td data-delay='.$delay.'> <img src="'.$path.$directoryfile.'"/>'; 
      echo '<br>'.$path.$directoryfile.'</td></tr>'; 

      $delay+=250;  
     } 
    } 
echo '</table>'; 
+0

什么是数据延迟?我认为这是一个jQuery脚本的自定义属性? – Reeno 2014-10-29 14:13:12

+0

根据其他问题,它是**工具提示**的Twitter Bootstrap自定义属性。但它不是标准的HTML,你的例子不起作用。 – Reeno 2014-10-29 14:27:53

0

我认为与其建立图像的表,我会把第一个图像,我会保存其他图片INA JavaScript变量的URL。然后,当你想加载其他图像(定时器,点击事件,...)时,你只需要改变原始图像的src参数。

0

看起来jQuery是办法:

var dir = "images/page1/"; 
var fileextension = [".png", ".jpg"]; 
$.ajax({ 
//This will retrieve the contents of the folder if the folder is configured a 'browsable' 
url: dir, 
success: function (data) { 
    //Lsit all png file names in the page 
    $(data).find("a:contains(" + (fileextension[0]) + "), a:contains(" + (fileextension[1]) + ")").each(function() { 
     var filename = this.href.replace(window.location.host,"").replace("http:///", ""); 

      jQuery(document).ready(function() { 
      //hide a div after 3 seconds 
       setTimeout("$("body").append($("<img src=" + dir + filename + "></img>"));",3000); 
      }); 
     }); 
    } 
}); 

警告:该代码尚未经过测试,但它应该给你一个如何解决你的问题的想法。

0

你可以用PHP做,如果你使用output functions

下面是一个例子,编号会被对方后可见一个:

for ($i = 1 ; $i <= 10 ; $i++) 
{ 
    echo $i."\n"; 
    flush(); 
    ob_flush(); 
    sleep(1); 
} 
+0

我想他希望在页面加载后让它们一个接一个显示 – JammyDodger231 2014-10-29 15:25:11

相关问题