0

我在 $.get 的范围内访问 var i 时遇到问题。这是我的代码:

for (var i = 0; i < printer_ids.length; i++) {
  $.get('/get_printer_status_message/'+printer_ids[i]+'/', function(data) {
    $('#printer_status_'+printer_ids[i]).html(data);

    console.log(data)
    console.log('id: #printer_status_'+printer_ids[i]);
    console.log('current:' + $('#printer_status_'+printer_ids[i]).html());
  });
}

i 在 $.get 行中定义,但不在 $.get 的范围内。如何在 $.get 的范围内访问 var i?

4

2 回答 2

1

一个更好的重构,避免在每圈重新定义函数:

var doIt = function (printer_id){
    $.get('/get_printer_status_message/'+printer_id]+'/', function(data) {
      $('#printer_status_'+printer_id).html(data);

      console.log(data)
      console.log('id: #printer_status_'+printer_id);
      console.log('current:' + $('#printer_status_'+printer_id).html());
    });
};

for (var i = 0; i < printer_ids.length; i++) {
    doIt(printer_ids[i]);
}
于 2013-08-26T03:52:17.750 回答
0

您必须i在本地范围内捕获变量:

for (var i = 0; i < printer_ids.length; i++) {
  (function (i){
    $.get('/get_printer_status_message/'+printer_ids[i]+'/', function(data) {
      $('#printer_status_'+printer_ids[i]).html(data);

      console.log(data)
      console.log('id: #printer_status_'+printer_ids[i]);
      console.log('current:' + $('#printer_status_'+printer_ids[i]).html());
    });
  }(i));
}
于 2013-08-26T03:29:54.723 回答