问题在于
BTWnummer调用回调时变量已更改,因为循环是在异步回调之前完全执行的。
您可以将其值保存在立即调用的函数中:
for (var i = 0; i < arraylength; i++) { (function(BTWnummer){ var callUrl = 'http://isvat.appspot.com/'+Land+'/'+BTWnummer+'/?callback=?'; $.getJSON(callUrl, BTWnummer, function(data){ alert(data+' '+BTWnummer); }); })(BTW[i]);}
如果很难阅读,则可以使用另一种方法将其与命名函数(而不是匿名函数)一起使用:
function f(BTWnummer){ var callUrl = 'http://isvat.appspot.com/'+Land+'/'+BTWnummer+'/?callback=?'; $.getJSON(callUrl, BTWnummer, function(data){ alert(data+' '+BTWnummer); });}for (var i = 0; i < arraylength; i++) { f(BTW[i]);}
之所以可行,是因为Javascript中变量的范围是函数执行。不同的执行
f存储不同的值
BTWnummer(寻找“关闭”更深入)。
在不久的将来,ES6将不再需要此技巧,因为该
let关键字将定义范围为块的变量。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)