0

我真的很喜欢关于重组以下功能的最佳方法的一些建议。我正在做的是设置文件阅读器并在 for 循环中刷新几个 div 内容。基本上,只要我在底部警报中说“alert(sparespacetofill);”,我的代码就可以完美运行。进行测试,但是当我删除此警报时,我的 div 的内容没有得到应有的刷新。显然,在函数完成运行之前没有调用“reader.onload”函数是一个问题,但我真的很困惑我应该如何以不同的方式构造它。

function setup_reader(file,number, sparespacetofill) {

var name = file.name;
var reader = new FileReader();

reader.onload = function(e) { 
$('#' + sparespacetofill).children('img').attr('src',e.target.result); 

if ($('#' + sparespacetofill).find("p").length <= 0 && sparespacetofill !='pic0' ) {
$('#' + sparespacetofill).append('<p id="deleteit">Delete<a></p>');  
}

}

reader.readAsDataURL(file);

//alert(sparespacetofill);///ISSUE IS IN HERE IF I UNCOMMENT THIS OUT

return sparespacetofill;  
}
4

2 回答 2

0

你可以试试 Javascript setTimeout() 这样的方法,

setTimeout(return sparespacetofill, 3000) ;

// 而不是这行

alert(sparespacetofill);///ISSUE IS IN HERE IF I UNCOMMENT THIS OUT

return sparespacetofill;  
于 2012-07-02T13:14:13.093 回答
0

当 onload 事件触发时,Ajax 操作是否完全完成?

如果是这样,无论您在函数返回时尝试执行什么功能,都应在 onload 函数结束时执行它。在那里调用一个函数,继续运行您正在运行的任何代码。

根据需要重新组织代码,使其可以分为两部分:在 setup_reader() 之前运行并调用 setup_reader() 的部分,以及在 onload 事件触发之后运行的部分。

于 2012-07-02T14:10:46.690 回答