2012-01-04 2 views
0

Я массив называется gallery_list:Javascript объектов и синтаксис

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 
     ]); 

Может ли кто-нибудь дать представление? Очевидно, что у меня что-то не так с моими структурами данных, но я не уверен, что это такое ...

+2

Это хорошая практика создания массивов как 'var data = [];' вместо использования 'new Array()'. Проверьте http://stackoverflow.com/a/1273936/275442 – julioolvr

+0

Точка хорошо взята, спасибо! – redconservatory

ответ

5

Ваш второй пример - это массив внутри массива. Вместо этого:

$.fancybox(data); 
+0

(Duh) ... спасибо, что сработало. – redconservatory

4

Вы можете попробовать что-то вроде

$.fancybox(data); 
0
$.fancybox([ 
      data 
     ]); 

избыточен, данные уже массив. [] - это оператор для создания литерала массива, поэтому то, что вы сделали выше, создано массивом, в котором массив данных, который вы уже создали, является первым и единственным элементом.

Как и другие предложил, что вы хотите следующее:

$.fancybox(data); 

Чтобы добавить немного, хотя, я думаю, что, возможно, вы бы избежать вашего неправильного понимания у вас инициализируется переменный «данные» следующим образом:

var data = []; //instead of "new Array()" 
for (i = 0; i < gallery_list.length, i++) { 
    //etcetera 
Смежные вопросы