Need some help synch'ing outer loop counter with dialog.onconfirm()

Posted by Chris Barnhill on Stack Overflow See other posts from Stack Overflow or by Chris Barnhill
Published on 2009-10-21T23:32:38Z Indexed on 2010/05/03 8:08 UTC
Read the original article Hit count: 218

Filed under:
|
|
|

I am writing a game for Facebook. IN the following code, I have a problem. I have a for loop executing, and in that loop, I call a dialog and implement 'onconfirm' for the dialog. The problem is that I need to access th e loop counter inside of the onconfirm function. But because the onconfirm is called outside of the scope of the for loop, the counter value is no longer valid because it's been incremented. I need some way to pass the counter value to the dialog onconfirm as it was at the time the dialog was displayed, not after the loop has finished. Or maybe someone has a better solution. Any help would be appreciated. Thanks.

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');
}

© Stack Overflow or respective owner

Related posts about AJAX

Related posts about fbjs