在jQuery中放置onload函数的问题

时间:2012-07-02 08:17:29

标签: javascript jquery javascript-events

我真的很喜欢关于重构以下功能的最佳方法的一些建议。我正在做的是设置文件阅读器并在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;  
}

2 个答案:

答案 0 :(得分:0)

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

setTimeout(return sparespacetofill, 3000) ;

//而不是这一行

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

return sparespacetofill;  

答案 1 :(得分:0)

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

如果是这样,那么当函数返回时你试图执行的任何功能,而不是在onload函数结束时执行它。在那里调用一个函数,继续使用你正在运行的任何代码。

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