变量lambda函数未定义

变量lambda函数未定义

问题描述:

我有这样的代码:变量lambda函数未定义

$.post("call.php", {form: data.item.value, positiony: t}, function (data){ top[t] = data;}); 
$("#pos" + t).css("margin-top", top[t]); 

,我打电话与阿贾克斯的功能柱和返回值页用来设置与增量编号一系列DIV的上边距pos0,#pos1 ...; 如果我用数字改变t,n次,其中n是div的数量,我没有问题;但如果我使用'for'来增加值,我在lambda函数中有未定义的变量t;事实上,如果我在lambda函数后打印top [t],打印的值是不确定的。 我该如何解决?

阿贾克斯是异步。您的第二行正在运行,然后 ajax调用完成。移动它成功处理程序:

$.post("call.php", {form: data.item.value, positiony: t}, function (data){ 
    top[t] = data; 
    $("#pos" + t).css("margin-top", top[t]); 
}); 

另外,如果你使用t的计数器这样的循环,注意,您的所有功能,成功将有持久的参考变量t而不是它的创建时间副本。所以你可能需要一个建造者功能,或者只是Function#bind

for (t = something; t < somethingElse; ++t) { 
    $.post("call.php", {form: data.item.value, positiony: t}, function (tValue, data){ 
     top[tValue] = data; 
     $("#pos" + tValue).css("margin-top", top[tValue]); 
    }.bind(null, t)); 
} 
+1

非常感谢!!!!!有用!! – dav04 2015-03-19 11:30:05