我是一个javascript noob,并且有关于在脚本中放置document.getElementById(' blahblah')。innerHTML语句的问题。
更具体地说,我有以下代码
function upload(evt) {
if (!browserSupportFileUpload()) {
alert('The File APIs are not fully supported in this browser!');
} else {
var data = null;
var file = evt.target.files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event) {
var csvData = event.target.result;
data = $.csv.toArrays(csvData);
if (data && data.length > 0) {
alert('Imported -' + data.length + '- rows successfully!');
} else {
alert('No data to import!');
}
};
reader.onerror = function() {
alert('Unable to read ' + file.fileName);
};
}
}
它基本上读取csv文件并将csv数据保存到名为" data"的变量中。
现在我的问题是,当我放置document.getElementById(' blahblah')。innterHTML = data [0] [0];在代码的末尾,它不会执行。
仅当语句放在reader.onload函数中的某个位置时才会执行。
有没有理由不在代码的底部执行?
答案 0 :(得分:0)
是的,原因是当浏览器到达时会执行整个脚本。因此,浏览器会看到您的脚本,然后尝试执行document.getElementById('blahblah').innterHTML = data[0][0];
,但data
尚未上传。
如果您将其放在onload
浏览器中,只有在上传data
时才能执行该功能。