所以我在响应成功的AJAX调用时创建按钮,每个按钮都需要调用具有该特定动态信息的函数。以下是我现在正在做的事情:
for(var i = 0; i < variableNames.length; i++) {
var getInvButton = document.createElement('button');
getInvButton.id = 'getInventoryButton';
console.dir('Add a button with this ID: ' + variableNames[i]);
getInvButton.addEventListener("click", function(charName, membershipName) {
console.dir('Test button click: ' + charName);
getInventoryVar(charName, membershipName);
} (variableNames[i],
result.Response.characters.data[variableNames[i]].membershipId), false);
}
我可以正确访问我的变量,并使用每个按钮的正确参数调用getInventoryVar
。但是,此功能在添加后立即执行。
答案 0 :(得分:1)
您可以像这样重写您的处理程序:
userPromise.done { (user) in
print(user)
}
答案 1 :(得分:0)
当您附加function(charName, memberShipNa...
时,实际上正在调用您正在尝试附加的功能。您应该创建一个调用此函数的新函数:
getInvButton.addEventListener("click", function() {
// old function
function(charName, membershipName) {
console.dir('Test button click: ' + charName);
getInventoryVar(charName, membershipName);
}(variableNames[i], result.Response.characters.data[variableNames[i]].membershipId);
}, false);
(可能更多的是succint,但是嘿)