我目前正在编写一个程序,用于读取用户输入的文件,其中的内容将实时更改。我的问题是,我似乎找不到一种方法来连续更新内容,而无需手动刷新页面或重新上传文件。我想知道是否可能,如果可能,我怎么做。
我尝试的是设置一个setInterval
计时器循环,它会不断调用printFile
函数,但它不起作用。
var data;
$(document).ready(function() {
if (isAPIAvailable()) {
$('#files').bind('change', handleFileSelect);
}
});
function isAPIAvailable() {
if (window.File && window.FileReader && window.FileList && window.Blob) {
return true;
} else {
//...
return false;
}
}
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
for (var i = 0; i < files.length; i++) {
var file = files[i];
// read the file contents
setInterval(printTable(file), 10000);
}
}
function printTable(file, callback) {
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event) {
var csv = event.target.result;
data = $.csv.toArrays(csv);
console.log(data);
};
reader.onerror = function() {
alert('Unable to read ' + file.fileName);
};
}
我刚开始使用JavaScript和Web开发,所以我非常感谢任何帮助或建议。感谢。
答案 0 :(得分:2)
我认为你必须将函数对象传递给setInterval。 setInterval调用的方式是错误的。
你可以试试。
setInterval(printTable, 10000, file)
以下网址是有关setInterval的文档。
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
答案 1 :(得分:0)
您可以尝试使用jQuery更新页面内容而无需刷新页面。
$("#yourTable").empty()
$("#yourTable").append("<your new table></your new table>")