我创建了表单创建的php / javaScript自动化。因此,当创建对话框时,动态且正确地添加按钮,但是我无法在单击按钮时触发的函数中访问JSON对象。
这是一个例子(警报不起作用,不显示):
aButtons[oGeneratedFormButtons[x].label] = function(){ alert(oGeneratedFormButtons[i].label); });
我可以将数据传递给函数,还是可以知道单击了哪个按钮。
答案 0 :(得分:1)
尝试使用这样的闭包:
for (var x = 0; x < JSON.length; x++) {
aButtons[JSON[x].label] = (function() {
var i = x;
return function() {
alert(i);
alert(JSON[i].label);
}
})();
}
这是fiddle。
答案 1 :(得分:0)
您确定问题不是您在函数内部使用的是另一个变量(i而不是x)吗?因为oGeneratedFormButtons [x] .label应该可以在函数内部访问,如果它可以在它外面访问的话。
aButtons[oGeneratedFormButtons[x].label] = function(){ alert(oGeneratedFormButtons[x].label); });