HTML5 Javascript FileReader -提取数据到父函数
HTML5 Javascript FileReader - extract data into parent function
查看HTML文件阅读器。我正在努力从文件阅读器中提取数据。我看到的所有示例都直接使用来自内置FileReader函数的数据。我试图将数据从文件阅读器中取出并将其存储在父类中。然而,我一直没有成功。
function constructTS(name){
// Variables
this.name = name;
this.csv = "";
}
constructTS.prototype.load = function(files){
if (window.FileReader) {
// FileReader are supported.
var reader = new FileReader(); //Exe#1
reader.onload = function(e){ //Exe#2
var csv = reader.result //Exe#5
var allTextLines = csv.split(/'r'n|'n/); //Exe#6
var lines = []; //Exe#7
while (allTextLines.length) {
lines.push(allTextLines.shift().split(','));
}; //Exe#8
this.lines = lines; //Exe#9
};
var x = reader.readAsText(files); //Exe#3
} else {
alert('FileReader yeah.. browser issues.');
};
alert(reader.lines[0]); //Exe#4
};
this.lines = lines;
中的this指的是Filereader类,而不是constructTS类。因此,信息不被存储。我也发现它有点奇怪,它如何运行整个函数,然后只在文件中读取之后。我想这对网页功能是有帮助的。知道如何将数据加载到类中吗?
在JavaScript中this
引用闭包上下文:reader.onload
中的this
是onload
方法的上下文,所以reader
.
在你的情况下:
function constructTS(name){
// Variables
this.name = name;
this.csv = "";
}
constructTS.prototype.load = function(files){
var that = this; //keep a reference on the current context
if (window.FileReader) {
// FileReader are supported.
var reader = new FileReader(); //Exe#1
reader.onload = function(e){ //Exe#2
var csv = reader.result //Exe#5
var allTextLines = csv.split(/'r'n|'n/); //Exe#6
var lines = []; //Exe#7
while (allTextLines.length) {
lines.push(allTextLines.shift().split(','));
}; //Exe#8
that.lines = lines; //Exe#9
};
var x = reader.readAsText(files); //Exe#3
} else {
alert('FileReader yeah.. browser issues.');
};
alert(reader.lines[0]); //Exe#4
};
要了解JavaScript中的this
,有很多资源,如https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this
this
在这里指未命名的回调函数。试试这个模式:
var outer = this;
reader.onload = function(e){
...
outer.lines = lines;
}
// you can use outer.lines or this.lines here now (they're the same)
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何将firebase数据传递到函数中
- 为什么不'我们在javascript中使用函数参数的数据类型
- Meteor Router数据函数被调用两次
- onChange 函数更改表中显示的数据
- 如何降低此函数的复杂性,该函数根据数据类型进行回调
- 函数jquery.html()不提供数据属性集值
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 是否保证传递给 always 函数的回调将在函数(数据)回调完成其工作后调用
- get 函数数据报告空信息
- JavaScript函数数据处理
- 我想将函数数据发送到使用 javascript 中的按钮设计的边框中
- fnGetPosition不是一个函数-数据表
- 函数外的Javascript函数数据
- 使用函数数据动态加载onclick函数
- 如何将函数索引和函数数据统一为一个新函数
- 使用美元.Post方法将函数(数据)值返回给变量
- 没有函数数据绑定不能工作
- Jquery.ajax,成功:函数(数据)没有返回一个普通对象
- 未捕获的类型错误:未定义不是函数-数据表