gpt4 book ai didi

javascript:访问嵌套回调中的循环计数器

转载 作者:行者123 更新时间:2023-11-28 16:34:25 25 4
gpt4 key购买 nike

我正在尝试访问嵌套回调中的 lopp 索引。这是代码:

gatherAddresses: function(){
var divs = $('#searchResults .address');
var addrs = [];
for (var i = 0; i < divs.length; i++) {
if (divs[i].className == 'address') {
var address = $.trim($(divs[i]).html());
var rel = divs[i].getAttribute('rel');
results.addresses.push({
address: address,
rel: rel
});
results.geocoder.getLatLng(address, function(point){

if (!point) {
alert(address + ' not found');
}
else {
var marker = new GMarker(point);

//chmurka :)
GEvent.addListener(marker, "click", function(){

/////////////here I want the loop index

marker.openInfoWindowHtml("<b>""</b><br/>");
});
results.map.addOverlay(marker);
addrs.push({
rel: results.findRel(address),
point: point
});
results.findCenter(addrs, results.map);


}
});
}
}
},

我知道这都是关于理解回调和变量范围的,但我请求你的帮助,因为这是我的第一个回调问题:)

最佳答案

由于闭包,您的回调已经可以访问 i,但它具有对该变量的“引用”,因此该值可能不是您想要的值,因为它始终是最新的最重要的是,如果您希望回调在调用 results.geocoder.getLatLng 时使用 if i 的值,您需要创建 i 的副本> 通过另一个匿名函数:

(function(e) { // get a copy of the value that WON'T change
GEvent.addListener(marker, "click", function(){
// use e here as the index
});
})(i); // pass the value of i in

关于javascript:访问嵌套回调中的循环计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com