2017-12-20 9 views
0

このコードでforループをどのように使用できますか? キャッチされないでSyntaxError:JavaScriptループからjson配列を使用するには?

$(".open-slide").on('click', function(){ 
var ddd = ['/cheetahadmin/Templates/uploads/Agency/slides/agenc-contact.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-about.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-index.jpg']; 
$.fancybox.open([ 

       for(var i=0; i<=ddd.length; i++){ 
        { 
         src : ddd[i], 
         opts : { 
          caption : 'Example Caption' 
         } 
        }, 
       } 

      ], { 
       loop : false, 
       toolbar: false 
      }); 
     }); 

このコードは私にエラーを与える ための予期しないトークンを、私は、私は間違いを持っ​​て知っているが、私はこの問題を解決する方法を知りません。

+0

ここにはJSONはありません。あなたは '<='のために反復回数が多すぎます、 '<'でなければなりません。そして、forループ全体がゼロを意味します。あなたが何をしているのかはあなたの考えではありません... – epascarello

+0

あなたはそのような角括弧の間にコードを詰め込むことはできません、javascriptは配列の最初の値(トークン)を期待していますforループではなく定義します。 – James

+0

私は間違いを知っています、どうやって括弧内に配列データを動的にプッシュできますか? –

答えて

0

array.mapを呼び出すと別の配列が返され、開始配列が目的の配列に簡単にマップされるため、最初に配列を作成して別の変数に格納する代わりに.map解決策を使用することができますその変数をパラメータとして渡すことによって.openと呼びます。

$.fancybox.open(ddd.map(function (el) { 
    return { 
    src: el, 
    opts: { 
     caption: 'Example Caption' 
    } 
    }; 
}), { 
    loop : false, 
    toolbar: false 
}); 
+0

ありがとう、それは完璧に動作します。 –

0

あなたのようなオブジェクトの新しい配列を作成することができます

var arrOptions = []; 
for (var i = 0; i < ddd.length; i++) { 
    arrOptions.push({ 
    src: ddd[i], 
    opts: { caption: 'Example Caption' } 
    }); 
} 

をして、同じようfancyboxに渡し:あなたがに、文字列の配列を変換したい

$.fancybox.open(arrOptions, { 
    loop: false, 
    toolbar: false 
}); 
+1

ありがとう、短く、有益な答え。 –

0

オブジェクトの配列あなたがしていることはそれを生み出すことではありません。コードを配列の外に引き出す必要があります。今、あなたは、forループでそれを行うと、アレイ

var ddd = ['/cheetahadmin/Templates/uploads/Agency/slides/agenc-contact.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-about.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-index.jpg']; 
 

 
var formatted = []; 
 
for (var i=0; i<ddd.length; i++) { 
 
    formatted.push({ 
 
    src: ddd[i], 
 
    opts: { 
 
     caption: 'Example Caption' 
 
    } 
 
    }) 
 
} 
 
console.log(formatted)

を構築するためにしかし、ほとんどの人は(ループおよび使用マップのためにスキップするでしょうプッシュすることができ)

var ddd = ['/cheetahadmin/Templates/uploads/Agency/slides/agenc-contact.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-about.jpg', '/cheetahadmin/Templates/uploads/Agency/slides/agency-index.jpg']; 
 

 
var formatted = ddd.map(function(val) { 
 

 
    return { 
 
    src: val, 
 
    opts: { 
 
     caption: 'Example Caption' 
 
    } 
 
    } 
 

 
}); 
 

 
console.log(formatted);

​​
関連する問題