2014-01-22 35 views
-1

我想知道是否有人可以帮忙。我无法发现它为什么不起作用。我对JS并不了解,但逻辑在我脑海中。我只是在拉取指定文件夹的图像内容(或者在URL中没有指定默认图像内容)并将它们依次显示在img中。PHP生成的JS照片滑块?

<img src="./img/samples/sample1.jpg" class="gallery_image" name="slideshow_image"> 

<?php 

if($_GET["med"]) 
{ 
    $files = glob('./img/samples/' . $_GET["med"] . '/*.{jpg}', GLOB_BRACE); 
} 
else 
{ 
    $files = glob('./img/samples/*.{jpg}', GLOB_BRACE); 
} 
echo '<script type="text/javascript">'; 
$n = 1; 
foreach($files as $file) 
{ 
    echo 'var image' . $n . ' = new Image();' 
     , 'image' . $n . '.src = "' . $file . '";'; 
    $n++; 
} 
echo 'var step = 1;' 
    , 'function slideit()' 
    , '{' 
    , ' document.images.slideshow_image.src = eval("image"+step+".src");' 
    , ' if(step < ' . $n . ')' 
    , '  step++;' 
    , ' else' 
    , '  step = 1;' 
    , ' setTimeout("slideit()",2500);' 
    , '}' 
    , 'slideit();'; 
?> 

任何帮助将不胜感激。

+1

这是PHP或Javascript的问题吗?看到呈现的HTML ... –

+0

它的真实代码会很有用吗?我不相信.... – voodoo417

回答

0

您正在以最糟糕的方式混合使用HTML,PHP和JavaScript。

当然你可以做这个工作,但是这会花费你很多努力,并且试图让它发展将是一个残酷的痛苦。

您应该定义一个每3种语言的清晰接口,而不是在与HTML代码交织的PHP脚本中半生成JavaScript代码。

PHP必须做的是找到要显示的图像列表。
JavaScript的工作是为幻灯片放映设置动画。
HTML是呈现图像。

这里是一个可能的解决方案:

<?php 
// returns a javascript array initializer 
function slideshow_files ($dir) 
{ 
    $dir = $dir ? "/".$dir : ""; 
    $files = glob('./img/samples' . $dir . '/*.{jpg}', GLOB_BRACE); 
    return "[".implode (',', $files)."]"; 
} 
?> 
<head> 
<script> 
// an anonymous function to avoid polluting global context 
(function() { 

    // get your image list from PHP 
    var imgs = <?= slideshow_files ($_GET["med"]); ?>; 

    // preload images 
    var image = []; 
    for (var i = 0 ; i != slide_image.length ; i++) 
    { 
     image[i] = new Image; 
     image[i].src = img[i]; 
    } 

    // launch your slideshow 
    var step = 0; 
    slide(); 

    // slideshow timer proc 
    function slide() 
    { 
     document.images.slideshow_image.src = image[step].src; 
     step = (step+1) % image.length; 
     setTimeout(slide, 2500); 
    } 
})(); 
</script> 
</head> 
<body> 
<img src="./img/samples/sample1.jpg" class="gallery_image" name="slideshow_image"> 
</body> 

不用说了,你就不能写东西比较复杂的,如果你一直倾你所有的代码放到一个大的HTML文件。