我遵循了blueimp的官方setup guide

我下载了最新版本的blueImp(2.25.0)

首先,我包括了css和js:

<!-- Blueimp Gallery -->
<link rel="stylesheet" href="../public/Gallery-2.25.0/css/blueimp-gallery.min.css">

<script src='../public/Gallery-2.25.0/js/blueimp-gallery.min.js'></script>


然后,我准备了轮播:

<div id="blueimp-gallery-carousel" class="image blueimp-gallery blueimp-gallery-controls blueimp-gallery-carousel">
    <div class="slides"></div>
    <h3 class="title"></h3>
    <a class="prev">‹</a>
    <a class="next">›</a>
    <a class="play-pause"></a>
    <ol class="indicator"></ol>
</div>


现在,我准备了图片:

<div id="links">

    <a href="../pcs/pic1.png"></a>
    <a href="../pcs/pic2.png"></a>
    <a href="../pcs/pic3.png"></a>

</div>


最后,我包含了一个脚本:

<script src="../js/blueImp.js"></script>


...具有以下内容:

<script>
blueimp.Gallery(
    document.getElementById('links').getElementsByTagName('a'),
    {
        container: '#blueimp-gallery-carousel',
        carousel: true
    }
);
</script>


结果:

javascript - BlueImp Carousel-TypeError this.slides [t]未定义-LMLPHP

如您所见,我遵循了安装指南,但是出现TypeError:单击箭头后,this.slides [t]未定义。我也尝试使用2.23.0,同样的错误。

我究竟做错了什么?



测试浏览器:

Mozilla Firefox 52.0.2(64位),适用于Ubuntu的Mozilla

Mozilla Firefox 52.0.1(32位),Windows 7

最佳答案

我通过在底部用Jquerys $(document).ready(function(){ ... })包装脚本来解决它

        $(document).ready(function() {

            blueimp.Gallery(
                document.getElementById('links').getElementsByTagName('a'),
                {
                    container: '#blueimp-gallery-carousel',
                    carousel: true
                }
            );
        });


但是我不明白为什么这样做是必要的,因为脚本是在最后一个位置(紧接在body标记之前)包含的。有什么解释吗?

09-17 01:12