JavaScript:如何在从本地文件读取纯文本后将数据保存到变量中?

时间:2016-06-15 18:04:48

标签: javascript file bind local filereader

我发现了许多关于从本地文件中读取纯文本以及将该文本显示到网页元素上的JavaScript教程,但我似乎无法找到如何将数据保存到我可以从其他部分访问的数组中我的剧本。

如果我尝试将文件中的文本分配到FileReader.onload()方法中的全局变量,我无法在方法外访问它。有什么建议?

以下代码是针对学校时间表项目,我与学生一起使用当地的课程文件,学生和教师。我有一个文件输入元素定义为:

<input type="file" id="courseFile" onchange="School.addCourses(event);">

然后我的School构造函数包含以下数组和方法:

function School (name) {
    this.courses = [];
    this.students = [];
    this.teachers = [];

    this.addCourses = function (event) {
        var fileInput = event.target;
        var r = new FileReader();
        r.readAsText(fileInput.files[0]);
        r.onload = function (e) {
            var text = r.result;
            var array = text.split("\n");
            document.getElementById("courseList").innerHTML = text;
            this.courses = array;
        }
    }
}

文本已加载到text,然后拆分为array,甚至会显示在courseList元素的页面上,但不会将数据复制到this.courses }。

1 个答案:

答案 0 :(得分:0)

此处的问题是thisaddCourses的范围。 要访问function School范围,您需要将this.courses = array更改为School.course = array

希望这有帮助!