将图像中的属性添加到javascript数组并显示

时间:2013-05-06 02:15:28

标签: javascript jquery html supersized

我需要将此div中的图像属性添加到JS数组并使用这些图像运行Supersized:

       <div id="dgaslides">
            <img src="img/temp/topimg01.jpg" title="Image 1">
            <img src="img/temp/topimg02.jpg" title="Image 2">
            <img src="img/temp/topimg03.jpg" title="Image 3">
        </div>

我的JS:

jQuery(function($){

var img_length = $('#dgaslides img').length-1;

var dgaslides = [];

$('#dgaslides img').each( function(i){

    var src     = $(this).attr('src');
    var title   = $(this).attr('title');

    dgaslides.push("{image : '" + src + "', title : '" + title + "'}");

    if(img_length == i){

        $.supersized({

            // Functionality
            slide_interval          :   3000,       // Length between transitions
            transition              :   1,          // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
            transition_speed        :   700,        // Speed of transition
            horizontal_center       :   1,          // Centers image horizontally. When turned off, the images resize/display from the left of the page.


            // Components                           
            slide_links             :   'blank',    // Individual links for each slide (Options: false, 'num', 'name', 'blank')
            slides                  :   dgaslides

        });

    }
}); });

它确实有效,因为我在输出中获得3个图像,但链接(src)是“Undefined”,标题也不存在?

硬编码的正确方法是:

var dgaslides = [           // Slideshow Images
                {image : 'img/temp/topimg01.jpg', title : 'Reception'},
                {image : 'img/temp/topimg02.jpg', title : 'Reception 2 og noget mere tekst her'},  
                {image : 'img/temp/topimg03.jpg', title : 'Reception 3'}
            ];

任何人都可以帮我弄清楚我做错了吗?

3 个答案:

答案 0 :(得分:0)

我认为你需要传递一个对象数组而不是一个字符串数组。

dgaslides.push({image : src, title : title });

答案 1 :(得分:0)

您将字符串保存到数组而不是对象。

这是一个JSFiddle,其代码的修改版本(没有超大功能)按预期工作:http://jsfiddle.net/SBuXF/

主要变化:dgaslides.push({image : src, title : title});

我已将生成的数组输出到控制台,然后是您的硬编码 - 它们是相同的。

编辑:您的硬编码标题与HTML不匹配,因此两个数组的内容略有不同,但它们的格式都正确。这里有一个纠正的小提琴:http://jsfiddle.net/SBuXF/1/

答案 2 :(得分:0)

您可以使用jQuery的map方法来简化任务。以下是代码。

jQuery(function ($) {
    var dgaslides = $('#dgaslides img').map(function () {
      return {
        image: $(this).attr('src'),
        title: $(this).attr('title')
      };
    });
    $.supersized({
      slide_interval: 3000,
      transition: 1,
      transition_speed: 700,
      horizontal_center: 1,                   
      slide_links: 'blank',
      slides: dgaslides
    });
});

希望这有帮助。