2012-01-04 11 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 = [];'として作成することをお勧めします。確認してくださいhttp://stackoverflow.com/a/1273936/275442 – julioolvr

+0

ポイントよく取られた、ありがとう! – redconservatory

答えて

5

2番目の例は配列内の配列です。代わりに:

$.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 
関連する問題