1

クリックリスナーが添付されたマーカーが付いたWebページにGoogleマップがあります。

問題: localhostでマップ マーカーをクリックすると、すべてが意図したとおりに機能しますただし、サーバーにアップロードしてライブバージョンを試した後、マーカーをクリックするとエラーが発生しますUncaught TypeError: Cannot read property 'listing_id' of undefined

どちらもとが定義されていることをconsole.log示しています...jsoni

Console.log 出力

[ オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト , オブジェクト ]

私: 48

キャッチされていない TypeError: 未定義のプロパティ 'listing_id' を読み取ることができません

なぜこうなった?

JS コード

$.getJSON(......., function(json) {

for(var i = 0; i < json.length; i++) {
    (function(i) {
        google.maps.event.addListener(markers[json[i].listing_id], 'click', function() {
            console.log('json: ' + json);
            console.log('i: ' + i);
            console.log('json[i].listing_id :' + json[i].listing_id);

            // Mark currently opened marker
            markers[json[i].listing_id].setIcon(base_url + 'images/template/markers/listing_black.png');

            //...
         });
     })(i);
 }

});
4

1 に答える 1

3

データをコールバック関数に渡していないようです。

代わりに、最初の行を次のように変更してみてください。

$.getJSON(......., function(json) {
于 2012-04-08T16:05:44.690 に答える