В вашем addListener
вызове вы на самом деле звоните loadInfo
вместо передачи ссылки на него. Вместо этого попробуйте следующее:
GEvent.addListener( marker1, "click", function() {
loadInfo(1);
});
Это создаст анонимную функцию, которая обернет ваш метод loadInfo
, вызывая метод при выполнении анонимной функции.
В качестве альтернативы, если вы не использовали какие-либо параметры в loadInfo
, просто удалите скобки:
GEvent.addListener( marker1, "click", loadInfo);
При использовании таких ссылок на функции следует помнить о том, в какой области они будут вызываться. Если бы вы использовали ссылку 'this'
, вы столкнетесь с ситуацией, когда 'this'
в функции обратного вызова будет фактически ссылаться не на область, в которой она была создана, а на область, в которой она выполняется, скорее всего, не будет содержать полей или методов, которые вы ожидаете вызвать, что приведет к ошибкам с указанием Undefined
. Как указывает Джонатан, вам придется использовать методы call()
и apply()
для явного связывания, чтобы обеспечить выполнение вашей функции в правильной области.