javascript - 从GEvent获取 "i"的值

标签 javascript jquery geocode gevent

我试图在按下 map 上的每个图标时添加一个事件监听器。我将信息存储在数据库中,我想要检索的值是“i”,但是当我输出“i”时,我得到它的最后一个值,即 5(有 6 个对象被绘制到 map 上)

下面是代码,获取 i 值而不是对象本身的最佳方法是什么。

var drawLotLoc = function(id) {

    var lotLoc = new GIcon(G_DEFAULT_ICON);             // create icon object
    lotLoc.image = url+"images/markers/lotLocation.gif";     // set the icon image
    lotLoc.shadow = "";                                 // no shadow
    lotLoc.iconSize = new GSize(24, 24);                // set the size
    var markerOptions = { icon: lotLoc };               

    $.post(opts.postScript, {action: 'drawlotLoc', id: id}, function(data) {

        var markers = new Array();
        // lotLoc[x].description
        // lotLoc[x].lat
        // lotLoc[x].lng
        // lotLoc[x].nighbourhood
        // lotLoc[x].lot
        var lotLoc = $.evalJSON(data);

        for(var i=0; i<lotLoc.length; i++) {
            var spLat = parseFloat(lotLoc[i].lat);
            var spLng = parseFloat(lotLoc[i].lng);

            var latlng = new GLatLng(spLat, spLng)
            markers[i] = new GMarker(latlng, markerOptions);

            myMap.addOverlay(markers[i]);

            GEvent.addListener(markers[i], "click", function() {
                console.log(i);     // returning 5 in all cases. 
                                    // I _need_ this to be unique to the object being clicked.
                console.log(this);
            });
        }
    });

最佳答案

您遇到关闭问题。您的函数会看到 i 的最后一个值。只需添加另一个闭包即可修复您的错误:

for(var i=0; i<lotLoc.length; i++) {
    (function(i){
        // ...
    })(i); //run the function with i as argument
}//for

关于javascript - 从GEvent获取 "i"的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439969/

相关文章:

javascript - jQuery 访问父对象属性?

javascript - 单击标记时在信息窗口内显示数组中的内容

google-maps - Google Maps API Geocode 在 Firefox 中给出错误 "Invalid label"

ios - Swift 3 私有(private)访问?

javascript - 从 localStorage Angular 的数组中删除项目

javascript - 选中复选框时突出显示表格行

Javascript 表选择

c# - 使用 Kendo Grid,如何更改工具栏中 "Create"按钮上的文字?

php - 将变量从 PHP 传输和存储到 JS/jQuery 的最佳方式

javascript - 覆盖 javascript 点击事件一次