JavaScript - 将变量更新为连续更改文件内容

时间:2017-07-27 03:14:18

标签: javascript jquery file loops

我目前正在编写一个程序,用于读取用户输入的文件,其中的内容将实时更改。我的问题是,我似乎找不到一种方法来连续更新内容,而无需手动刷新页面或重新上传文件。我想知道是否可能,如果可能,我怎么做。

我尝试的是设置一个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开发,所以我非常感谢任何帮助或建议。感谢。

2 个答案:

答案 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>")