【问题标题】:javascript slideshow arrayjavascript幻灯片数组
【发布时间】:2012-04-12 03:55:58
【问题描述】:

我正在使用幻灯片 2 (http://www.electricprism.com/aeron/slideshow/) 在我的网站上显示几张图片,问题是图片的数量和它们的位置应该硬编码到javascript代码。

我想使用一个数组(来自一个 php 文件输出) 并以某种方式为“var data”分配新值,以便显示文件夹中的所有图像,而无需每次手动更新。 有什么想法吗?

<script>
        window.addEvent('domready', function(){


            var data = { '5.jpg': { caption: '1' }, '2.jpg': { caption: '2' }, '3.jpg': { caption: '3' }, '4.jpg': { caption: '4' }};

            new Slideshow('overlap', data, { captions: { delay: 1000 }, delay: 3000, height: 300, hu: 'images/', width: 400 });

        });
    </script>

【问题讨论】:

  • 尝试api.jquery.com/jQuery.ajax 编写一个ajax函数将数据加载到从请求返回的JS数组中(fetchImages.php - 说这会返回5张图片)。如果到达最后一张图片,请调用相同的 ajax 函数(fetchImages.php?start=5 - 这应该返回接下来的 5 张 id 大于 5 的图片)以将下一个图片槽加载到数组中。

标签: php javascript arrays mootools


【解决方案1】:

如果您使用 PHP,那么您可以轻松做到这一点。

说,你有逻辑将所有文件放入一个如下所示的数组中:

$foo = Array("2.jpg" => "2", "3.jpg" => "3");

代表文件名和标题

你可以这样做:

<?php echo json_encode($foo); ?>

输出它。

如果要在 js 块中将其输出到变量中:

var data = <?php echo json_encode($foo); ?>;

实际上应该呈现为:

var data = [{"2.jpg": "2"},{"3.jpg": "3"}];

另外,请记住,在您的示例中,您实际上并没有使用数组,而是使用了对象。有很大的不同。在输出中,我建议您将获得一个对象数组。你会像这样循环它:

Array.each(data, function(img) {

});

但由于您的密钥是动态的,因此难以迭代,您需要 Object.eachObject.keysfor (var key in obj) {} 来获取属性。更好的数据结构是:

$foo = Array(Array("name" => "2.jpg", "caption" => "two"), Array("name" => "3.jpg", "caption" => "three"));

这意味着在你的js循环中,你可以参考:

Array.each(data, function(img) {
    img.name; // filename
    img.caption; // title    
});

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2017-12-26
    • 2013-10-04
    相关资源
    最近更新 更多