Javascript对象和语法

时间:2012-01-04 17:32:19

标签: javascript

我有一个名为gallery_list的数组:

var gallery_list = ["profile.cfm", "explore.cfm", "list.cfm", "lesson.cfm", "class.cfm", "deploy_to_class.cfm"];

当我写下以下内容时,它可以工作:

$.fancybox([
            { 'href' : gallery_list[0],
            'type' : 'iframe' },
            { 'href' : gallery_list[1],
            'type' : 'iframe' },
            { 'href' : gallery_list[2],
            'type' : 'iframe' },
            { 'href' : gallery_list[3],
            'type' : 'iframe' },
            { 'href' : gallery_list[4],
            'type' : 'iframe' },
            { 'href' : gallery_list[5],
            'type' : 'iframe' },

        ]);

但如果我尝试做类似下面的事情,它就不起作用了:

var data = new Array();
        for (i = 0; i < gallery_list.length, i++) {
                var obj = {
                    'href' : gallery_list[i],
                    'type' : 'iframe'   
                }
                data.push(obj);
        }

$.fancybox([
            data
        ]); 

任何人都可以提供任何见解吗?很明显,我的数据结构出了问题,但我不确定它是什么......

3 个答案:

答案 0 :(得分:5)

您的第二个示例是数组中的数组。代替:

$.fancybox(data);

答案 1 :(得分:4)

你可以试试像

这样的东西
$.fancybox( data ); 

答案 2 :(得分:0)

$.fancybox([
            data
        ]);

冗余,数据已经是数组。 []是用于创建数组文字的运算符,因此您在上面所做的就是创建一个数组,其中您已经构造的数据数组是第一个也是唯一的元素。

正如其他人所说,你想要的是以下内容:

$.fancybox(data);

为了补充一点,我想如果您按照以下方式初始化“数据”变量,也许可以避免误解:

var data = []; //instead of "new Array()"
for (i = 0; i < gallery_list.length, i++) {
    //etcetera