Ваша проблема здесь в том, что вы не понимаете, какую область вы устанавливаете.
Вы передаете функцию ready
самой функции.В этой функции вы создаете другую функцию с именем codeAddress
.Этот объект существует в области, в которой он был создан, а не в объекте окна (где все и его дядя могут вызвать его).
Например:
var myfunction = function(){
var myVar = 12345;
};
console.log(myVar); // 'undefined' - since it is within
// the scope of the function only.
Найдите здесьЕще немного об анонимных функциях: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
Другое дело, что я заметил, что вы используете jQuery на этой странице.Это значительно упрощает настройку обработчиков кликов, и вам не нужно ломать голову над настройкой атрибута «onclick» в HTML.Вам также не нужно делать метод codeAddress
доступным для всех:
$(function(){
$("#imgid").click(function(){
var address = $("#formatedAddress").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
}
});
});
});
(Вы должны удалить существующий onclick
и добавить идентификатор к элементу изображения, который вы хотите обработать)
Обратите внимание, что я заменил $(document).ready()
его ярлыком, равным $()
(http://api.jquery.com/ready/).). Затем метод click используется для назначения обработчика щелчка элементу.Я также заменил ваш document.getElementById
на объект jQuery.