gpt4 book ai didi

for循环中的javascript闭包不起作用

转载 作者:行者123 更新时间:2023-11-30 13:10:11 27 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Javascript closure inside loops - simple practical example

我在关闭 phonegap 应用程序时遇到问题。我有一个 JSON 对象,其中包含有关如何创建表单的说明。大致是这样的代码:

for (var i in this.form.elements) {
var element = this.form.elements[i];
switch (element.type) {
// other cases
case 5:
var addThumb, photoInput;
addThumb = function (domId) {
return function (imgData) {
console.log('id: ' + domId);
$(domId).attr({src: 'data:image/jpeg;base64,' + imgData});
}
}('#thumb-'+element.id);
photoInput = $('<input>')
.attr({type: 'button', value: element.name, name: element.type, id: element.id, 'class': 'photobutton'})
.click(function (filename, cb) {
return function() {
console.log('taking photo and saving to ' + filename)
takePhoto(filename,addThumb)
}
}('photo-'+element.id, addThumb)
);
photoThumb = $('<img>').attr({id: 'thumb-'+element.id, 'class': 'thumbnail', src: 'img/target.png'});
$('#content').append(photoInput, photoThumb);
break;
}
}

单击照片按钮可打开相机拍摄照片,并将其保存到磁盘。保存后,将使用 base64 照片数据调用 addThumb 以替换缩略图。我的测试表单的每个输出是:

taking photo and saving to file photo-686
id: '#thumb-690

拍照的闭包有效,但是当 addThumb 作为回调调用时,domId 显示经过 for 循环的最后一个 element.id。给定两个缩略图,无论按下什么按钮,第二个总是被替换。它发生在 iPhone 和 Android 上,所以我写它的方式一定有问题。我做错了什么?

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