function draw(data)
{
var i = 0;
var checkduplicates = new Array();
drawOne(i);
//console.log(checkduplicates) Problem!!!;
function drawOne(i)
{
//photos is a object that has been omitted for simplicity
var picinfo = photos[Math.floor(Math.random()*photos.length)];
checkduplicates.push(picinfo);
img.onload = function()
{
var ctx = document.getElementsByClassName("canvas")[i].getContext('2d');
// Draw pieces
ctx.drawImage(img,0,0,132,150);
//ctx.fillText("haha",0,0);
ctx.drawImage(frame,0,0,133,152);
i++;
if (i != canvaslength)
{
drawOne(i);
}
}
//console.log(checkduplicates.length);
}
}
嘿,我聲明的繪製函數內的drawOne功能,從而使局部變量checkduplicates與上述內部功能drawOne訪問。但是,在drawOne函數運行16次之後,數組checkduplicates應該填充有對象,這由drawOne中的console.log證明,顯示了16個對象在數組中。但是,我標記爲「Problem」的console.log函數顯示該數組只有第一個對象,而其他console.logs則顯示該數組已充滿對象。我不明白爲什麼,因爲修改數組的唯一方法是通過已被調用了16次的「push」方法,並且如果我註釋掉img.onload部分,console.log中的註釋「problem」顯示數組充滿了對象。爲了簡單起見,我故意省略了其他代碼,並且我的螢火蟲不會抱怨錯誤。謝謝陣列不能被填充
等待 - 「我」從哪裏來?和「照片」?和「checkduplicates」?你還沒有發佈足夠的代碼。 – Pointy 2011-04-18 23:56:53
我初始化爲0;我會修好它。謝謝 – 2011-04-18 23:58:14