0

我有这个功能:

function findAddressViaGoogle(address){
     var geocoder = new google.maps.Geocoder();
     geocoder.geocode( { 'address': address }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            return results[0].formatted_address;
        } else {
            console.log("Unable to find address: " + status);
        }
     });
}

如何打印此函数的返回值?

如果我做:

$('#location-suggest').text('Do you mean <a>'+findAddressViaGoogle($(this).val())+'</a> ?');

它打印未定义

4

3 回答 3

2

您在寻找document.write吗?

于 2012-06-03T00:59:48.897 回答
2

像这样:

$(".putYourSelectorHere").html(findAddressViaGoogle())

替换.putYourSelectorHere为您的选择器(#output例如)。如果要在正文中打印结果,请使用body选择器:

$("body").html(findAddressViaGoogle())

http://api.jquery.com/html/

于 2012-06-03T01:06:34.477 回答
2

回调在内部某处被调用,Geocoder()并且在您的函数内部未收到其返回值findAddressViaGoogle()

您可以初始化一个变量并将值传递给它:

function findAddressViaGoogle(address){
  var address = "";
  var geocoder = new google.maps.Geocoder();

  geocoder.geocode( { 'address': address }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      address = results[0].formatted_address;
    } else {
      console.log("Unable to find address: " + status);
    }
  });

  return address;
}

var myAddress = findAddressViaGoogle('foobar');
alert(myAddress);

另外,请记住,您必须先调用函数才能返回任何内容。

所以要传递收集到的值:

$('#myElementID').html(findAddressViaGoogle('foobar'));
于 2012-06-03T01:14:37.870 回答