gpt4 book ai didi

JavaScript:为什么我的闭包不起作用?

转载 作者:行者123 更新时间:2023-12-02 20:28:03 26 4
gpt4 key购买 nike

以下代码仅将最后一个.enter_form输入的值分配给最后一个MYAPP.list[0].responses[MYAPP.score.round].form[key] (其中 key 是唯一变化的东西)。我认为这是因为只有键的最后一个值被传递给 addEntry(),但我不知道如何解决这个问题。

$('.enter_form input').each(function() {
var key = $(this).attr('id');
var val = $(this).val();
userDict[key] = val;
MYAPP.list[0].responses[MYAPP.score.round].form = [];
function addEntry() {
return function(k) {
MYAPP.list[0].responses[MYAPP.score.round].form[k] = {'entry': userDict[k]};
}(key);
}
addEntry();
}

最佳答案

您的 addEntry 函数是多余的,因为每次迭代都已经在它自己的范围内运行,因此 keyval 被正确保留(希望解释有意义)。此外,您插入的数组也会在每次迭代时被覆盖,因此在 .each() 的末尾,您最终会得到一个只有 1 个值的数组。即使 id 是数字,它也应该是一个对象而不是数组。

// you where overwriting this each iteration
MYAPP.list[0].responses[MYAPP.score.round].form = {};

$('.enter_form input').each(function() {

var el= $(this); // cache instead of creating a new jQuery object each time
var key = el.attr('id');
var val = el.val();

userDict[key] = val;
MYAPP.list[0].responses[MYAPP.score.round].form[key] = {'entry': userDict[key]};

}); // ); was also missing

应该可以。

关于JavaScript:为什么我的闭包不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522837/

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