所以我有一个有趣的问题。我在引用其他Javascript文件之前声明了一个全局变量,但该变量似乎没有完成。也许我错过了某个地方的一步?
变量是一个字符串,它是上传文件的内容,如下所示:
function getText(s){ //creates a global variable that can hold the file
window.text = s;
console.log(window.text);
};
function handleFileSelect(event) {
var files = event.target.files; // The file that is uploaded
var reader = new FileReader();
reader.onloadend = function(event){
getText(event.target.result); //pulling out the content of the file
loadScript('total.js',function(){ //starts app code
window.text
});
};
reader.readAsText(files[0],"UTF-8");//required to read the text
};
try{
document.getElementById('files').addEventListener('change',
handleFileSelect, false); //listens for the uploaded file
}
catch(e){
alert(e);
};
因此,一旦用户上传文件,内容就会被复制到window.text中。记录内容以确保我抓住了正确的东西。然后loadScript
允许其余的应用代码开始运行。我需要我的程序等待用户在继续之前指定一个文件,并且我对AngularJS有一些奇怪的怪癖,所以以这种方式运行它是我能想到的唯一解决方法。
loadscript
的内容:
function loadScript(url, callback){
var script = document.createElement("script")
script.type = "text/javascript";
script.onload = function(){
callback();
};
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
};
total.js
从这行代码开始,最终导致输出:
var csv=window.text;
一切正常。输出看起来应该......保存为空。意思是window.text没有正确地通过。
是否由于回调而导致它没有完全通过?我该如何解决这个问题?
修改 我的回调中的函数根本就没有运行,我已经想通了,所以这不是传递变量的问题。但PHPglue的输入仍然有效。感谢。
答案 0 :(得分:0)
而不是window.text
,只需使用我推荐或不使用var
关键字的代码,在您的所有代码上声明您的变量,例如:
var windowText;
function getText(s){
windowText = s;
console.log(windowText);
}
在JavaScript变量中,如果它们是在其他代码之上编写的话,它们会自动执行,除非它们专门用于函数内部。只要您不在功能代码中使用var
关键字,就可以重复使用windowText
。