J'écris un jeu pour Facebook. Dans le code suivant, j'ai un problème. J'ai une boucle for exécutant, et dans cette boucle, j'appelle un dialogue et implémente 'onconfirm' pour le dialogue. Le problème est que j'ai besoin d'accéder au compteur de boucle à l'intérieur de la fonction onconfirm. Mais comme onconfirm est appelé en dehors de la portée de la boucle for, la valeur du compteur n'est plus valide car elle a été incrémentée. J'ai besoin d'un moyen de passer la valeur du compteur à la boîte de dialogue onconfirm comme c'était le cas au moment de l'affichage de la boîte de dialogue, pas après que la boucle soit terminée. Ou peut-être que quelqu'un a une meilleure solution. Toute aide serait appréciée. Merci.Besoin d'aide pour synchroniser le compteur de boucle externe avec dialog.onconfirm()
function unloadCargo() {
//debugger;
var actionPrompt = document.getElementById('action-prompt');
actionPrompt.setTextValue('Unloading cargo...');
var ajax = new Ajax();
ajax.responseType = Ajax.JSON;
ajax.ondone = function(data) {
debugger;
if(data.unloadableCargo.length == 0) {
loadCargo();
} else {
//console.log('unloadable cargo='+dump(data.unloadableCargo));
var i = 0;
var j = 0;
var ucCount = data.unloadableCargo.length;
for(i = 0; i < ucCount; i++) {
cargoDialog = new Dialog();
cargoDialog.showChoice('Unload Cargo', 'Unload ' + data.unloadableCargo[i].goods_name + ' at ' + data.unloadableCargo[i].city_name + ' for ' + data.unloadableCargo[i].payoff + 'M euros?');
cargoDialog.onconfirm = function() {
//console.log('unloadable cargo onconfirm='+dump(data.unloadableCargo));
var ajax = new Ajax();
var param = {"city_id": data.unloadableCargo[i].city_id, "goods_id": data.unloadableCargo[i].goods_id, "payoff": data.unloadableCargo[i].payoff};
ajax.ondone = function(demandData) {
var demands = document.getElementById('demands');
var innerXhtml = '<span>';
for(var j = 0; j < demandData.demands.length; j++) {
innerXhtml = innerXhtml + ' <div class="demand-item"><div class="demand-city">' + demandData.demands[j].city + '</div><div class="demand-pay">' + demandData.demands[j].cost + '</div><div class="demand-goods">' + demandData.demands[j].goods + '</div></div>';
}
innerXtml = innerXhtml + ' </span>';
demands.setInnerXHTML(innerXhtml);
// update balance
loadCargo();
}
ajax.post(baseURL + "/turn/do-unload-cargo", param);
}
cargoDialog.oncancel = function() { loadCargo(); }
}
//loadCargo();
}
}
ajax.post(baseURL + '/turn/unload-cargo');
}
setcontext déterminer quel élément de dialogue a le focus. Je l'ai fait fonctionner en ajoutant le compteur comme une propriété de la boîte de dialogue, puis en le référant comme 'this.property' dans dialog.onconfirm. –