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 イベントの発生後に実行される部分の 2 つの部分に分割できるようにします。

于 2012-07-02T14:10:46.690 に答える