gpt4 book ai didi

Javascript - onload 函数运行时变量未定义

转载 作者:行者123 更新时间:2023-11-29 20:05:23 25 4
gpt4 key购买 nike

for (var i=0, file; file=files[i]; i++) {
if (file.type=='image/jpeg') {
var reader = new FileReader();
reader.onload = function(e) {
$('#upload_preview').append('<img src="'+e.target.result+'" width="150" alt="" />');
alert(file.type); // error - file is undefined
}
reader.readAsDataURL(file);
}
}

在定义文件的代码块中声明了变量读取器,但错误报告变量文件未定义。这让我发疯,我知道这是非常基本的事情。

最佳答案

所以这个循环 for (var i=0, file; file=files[i]; i++) 在评论中提到将在最后将文件设置为 undefined环形。您应该使用 each 或在 for 循环中调用一个函数来保存作用域。

files.forEach(function(file){
if (file.type=='image/jpeg') {
var reader = new FileReader();
reader.onload = function(e) {
$('#upload_preview').append('<img src="'+e.target.result+'" width="150" alt="" />');
alert(file.type); // error - file is undefined
}
reader.readAsDataURL(file);
}
})

或者如果您需要支持旧版浏览器:

for (var i=0, l=files.length; i < l; i++) {
(function(i) {
var file = files[i];
if (file.type == 'image/jpeg') {
var reader = new FileReader();
reader.onload = function(e) {
$('#upload_preview').append('<img src="' + e.target.result + '" width="150" alt="" />');
alert(file.type); // error - file is undefined
}
reader.readAsDataURL(file);
}
})(i);
}

关于Javascript - onload 函数运行时变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com