私はこれを長くて複雑に書くつもりでしたが、私は単純なアプローチに行くことを考えました。
変数Urlが存在する要素の配列を作成するループがあります。配列は次のようになります。
x = [url,function(){...},function(){...}];
次に、arrayListに追加します。
arrayList = [x1,x2,x3,x4,x5];
これまでのところ、それは理にかなっていると思います。arrayListオブジェクトに、1つのvar関数と2つの関数を格納します。
これがキッカーです。
arrayListを反復処理すると、urlはすべて同じになります。これは、arraylistを作成したforloop内のurlへの最後の参照です。
これを解決するための私の試みは、変数名自体ではなく、変数に対して.toString()を実行して、その内容を配列に格納することでした。 それはうまくいきませんでした:(
これを解決するにはどうすればよいですか?私は困惑しました:-(
編集:答えの1つは、配列が不正確にそれを参照していることに関するものだったため、ループがどのように見えるかを示したいと思います
Edit2:問題の原因となっているURLは、以下のdisplayFileの内部URLです。それらはすべて同じ参照を指しているようです。これはnonoです。それらを変更するにはどうすればよいですか?パラメータとして渡す必要がありますか?
var newArray = new Array();
for(var i=0;i<fileUrls.length;++i) {
var url = fileUrls[i];
var x = [];//new Array();
x = [url,
function(){
displayFile(url, 'image', null, ft_id, null, null, null, null, !MA.isiOS());
},
function(e){
if(DEBUG) console.log('Error creating gallery thumbnail');
alert('There was a problem creating a thumbnail');
MA.hideMessage();
}
];
newArray.push(x);
}