我打算把这篇写得又长又复杂,但我想采用直截了当的方法。
我有一个循环,它创建一个元素数组,其中变量Url。数组如下所示:
x = [url,function(){...},function(){...}];
然后进入一个arrayList:
arrayList = [x1,x2,x3,x4,x5];
我认为到目前为止这是有道理的。它在 arrayList 对象中存储 1 个 var 和 2 个函数。
这是踢球者。
当我遍历arrayList 时,url都是一样的,是创建arraylist 的forloop 中对url的最后引用。
我解决这个问题的尝试是,对变量执行 .toString() 以将其内容存储在数组中,而不是变量名本身。 那没用:(
我会怎么做才能解决这个问题?我很难过:-(
编辑:我想展示循环的样子,因为其中一个答案是关于数组不准确地引用它
Edit2:导致问题的 url 是内部 url,在下面的 displayFile 中。似乎这些都指向同一个参考,这是一个诺诺。我将如何改变这些?我必须将它作为参数传递吗???
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);
}