Это очень распространенная проблема JavaScript - вы можете увидеть похожий вопрос, заданный здесь , а также есть хорошее сообщение в блоге , объясняющее это. Проблема в том, что переменные marker
и i
, а также g_listOfBusinessDetails
, которые вы используете внутри функции, не привязаны к значениям, которые они имели при вызове GEvent.addListener
. В случае события click функция запускается с любыми значениями, которые они имеют в данный момент времени (например, i
предположительно g_listOfBusinessDetails.length
).
Вы можете связать их по мере необходимости, вызвав фабричную функцию, которая создает функцию-обработчик для вашего маркера и заголовка следующим образом:
GEvent.addListener(marker, "click", (function(myMarker, title) {
return function() {
myMarker.openInfoWindowHtml(title);
}
})(marker, g_listOfBusinessDetails[i].name));