Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中onload函数的放置问题_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript jQuery中onload函数的放置问题

Javascript jQuery中onload函数的放置问题,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我真的很想得到一些关于重新构造以下函数的最佳方法的建议。我正在做的是设置文件读取器,并在for循环中刷新几个div内容。基本上,只要我在底部的警报中留下“alert(sparespactofill);”进行测试,我的代码就可以完美地工作,但是当我取出此警报时,我的div的内容不会像应该的那样得到刷新。显然,“reader.onload”函数在函数运行结束之前没有被调用是一个问题,但我真的很纠结于如何以不同的方式构造它 function setup_reader(file,number, spar

我真的很想得到一些关于重新构造以下函数的最佳方法的建议。我正在做的是设置文件读取器,并在for循环中刷新几个div内容。基本上,只要我在底部的警报中留下“alert(sparespactofill);”进行测试,我的代码就可以完美地工作,但是当我取出此警报时,我的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;  
}
功能设置\读卡器(文件、编号、填充){
var name=file.name;
var reader=new FileReader();
reader.onload=函数(e){
$('#'+SPARESPATOFILL).children('img').attr('src',e.target.result);

如果($('#'+sparespactofill).find(“p”).length您可以像这样尝试Javascript setTimeout()方法

setTimeout(return sparespacetofill, 3000) ;
//而不是这条线

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

return sparespacetofill;  

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

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


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

能否尝试onloadend()而不是onload?也许这有助于实现onloadend,并根据链接添加闭包,但仍然没有乐趣?查看调用
setup\u reader()
,以及查看函数返回后运行的代码(如果有)可能会有所帮助。嗨,Matt,我使用了一个函数,即:setup\u reader(file,i,sparespatoFill);不确定我是否正确理解您的意思,但依赖setup_reader函数return来启动代码中的下一步可能是不合理的(因为onload事件尚未触发)。与其在函数返回时继续执行下一步,不如在onload事件处理程序的末尾继续,在那里调用一个函数来运行仍然需要运行的任何代码。太好了,这就成功了,在上面Simons链接的帮助下,在onload上加上一个闭包。感谢所有人,非常感谢