Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP生成的JS照片滑块?_Javascript_Php - Fatal编程技术网

Javascript PHP生成的JS照片滑块?

Javascript PHP生成的JS照片滑块?,javascript,php,Javascript,Php,我想知道是否有人能帮忙。我看不出它为什么不起作用。我对JS并不感到惊讶,但逻辑在我的脑海里。我只是在拉取指定文件夹的图像内容(或者在URL中没有指定默认文件夹)并在img中顺序显示它们之后 <img src="./img/samples/sample1.jpg" class="gallery_image" name="slideshow_image"> <?php if($_GET["med"]) { $files = glob('./img/samples/'

我想知道是否有人能帮忙。我看不出它为什么不起作用。我对JS并不感到惊讶,但逻辑在我的脑海里。我只是在拉取指定文件夹的图像内容(或者在URL中没有指定默认文件夹)并在img中顺序显示它们之后

<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();';
?>


任何帮助都将不胜感激。

您正在以最糟糕的方式混合使用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>

//避免污染全局上下文的匿名函数
(功能(){
//从PHP获取图像列表
var-imgs=;
//预加载图像
var图像=[];
对于(变量i=0;i!=slide\u image.length;i++)
{
图像[i]=新图像;
image[i].src=img[i];
}
//启动幻灯片放映
var阶跃=0;
幻灯片();
//幻灯片放映计时器程序
函数幻灯片()
{
document.images.slideshow_image.src=image[step].src;
步长=(步长+1)%image.length;
设置超时(幻灯片,2500);
}
})();

不用说,如果您一直将所有代码转储到一个大的HTML文件中,您将无法编写任何中等复杂的代码。

这是PHP或Javascript的问题吗?查看呈现的HTML…它的真实代码会很有用吗?我不相信。。。。