我有以下代码,我不太清楚如何将它一直传递给onload函数。
我试图在不同的地方定义它但没有成功,特别是因为它的定义需要在传递给document.on
方法的函数中发生,因为我希望得到this
的保留参考
$(document).ready(function(e) {
$(document).on('click', "#someId", function(e) {
e.preventDefault();
var variable = $(this).attr('name');
chrome.fileSystem.chooseEntry({
type: 'openFile', accepts:[{
extensions: ['txt']
}]
},
function(fileEntry) {
if (!fileEntry) {
return;
}
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onload = function(e) {
////******* how to access variable here? *******\\\\
chrome.storage.local.set({'txt': e.target.result});
};
reader.readAsArrayBuffer(file);
});
});
});
});
我需要访问variable
函数中的onload
。
我怎么能通过呢?
答案 0 :(得分:0)
您可以利用closures执行此操作:
onload = function () {
var variable;
$(document).on('click', "#someId", function(e) {
variable = $(this).attr('name');
// use variable here
});
// and here
};
答案 1 :(得分:0)
如果我正确解析您的代码,那么您应该能够在您想要的地方使用变量。它的范围正确,并且有一个闭合装置可以保持活动状态。
将其设为全局,就像之前的回答一样,会产生同时调用的问题 - 下一次调用可能会覆盖变量值,并且在.onload中获取它时会得到不同的值。