我的javascript代码是这样的:
for(var i=0; i < 5; i++) {
$('input[name="photo-'+i+'"]').change(function () {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = imageProducIsLoadedt;
reader.readAsDataURL(this.files[0]);
}
});
}
function imageProducIsLoadedt(e) {
$('#thumbnail-view-0').attr('src', e.target.result);
document.getElementById("thumbnail-upload-0").style.display = "none"
...
};
例如,我点击名称= photo-3的输入文件,它将在索引3上运行循环
我要问的是:如何将参数i = 3发送到imageProducIsLoadedt函数?
我尝试添加如下参数:
reader.onload = imageProducIsLoadedt(e, i);
imageProducIsLoadedt像这样:
function imageProducIsLoadedt(e,i) {
但是,存在这样的错误:
未捕获的ReferenceError:未定义e
我该如何解决这个问题?
更新
我尝试像这样更新全局变量:
let test = '';
for(let i=0; i < 5; i++) {
$('input[name="photo-'+i+'"]').change(function () {
test = i;
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = imageProducIsLoadedt;
reader.readAsDataURL(this.files[0]);
}
});
}
function imageProducIsLoadedt(e) {
console.log(test)
...
};
它有效
答案 0 :(得分:2)
您可以使用寄存器onload创建一个匿名函数,并在其中调用imageProducIsLoadedt函数,如下所示
for(var i=0; i < 5; i++) {
$('input[name="photo-'+i+'"]').change(function (e) {
if (this.files && this.files[0]) {
var reader = new FileReader();
(function(i){
reader.onload = function(){
imageProducIsLoadedt(e,i);
}
});
reader.readAsDataURL(this.files[0]);
}
});
}