jQuery函数不向Variable返回值

时间:2015-01-27 10:05:04

标签: jquery function

我试图在jQuery中返回一个值并替换div的Text。我的函数中的console.log()记录了正确的值,但函数没有返回我的变量(d),它应该替换div中的Text。

这是我的代码示例:

var d = getLatLong('Bahnhofplatz, 8000 Zürich');
$('#divResult').replaceWith(d);

//$("#divResult").replaceWith("asdsadsadsad");

function getLatLong(address) {
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        address : address, 
        region: 'no'
    },
    function(results, status) {
        if (status.toLowerCase() == 'ok') {
            var coords = new google.maps.LatLng(
                results[0]['geometry']['location'].lat(),
                results[0]['geometry']['location'].lng()
                );
            var latlng = 'Latitute: ' + coords.lat() + '    Longitude: ' + coords.lng();
            console.log(latlng);
            return latlng;
            }
        }
    );
};

这是一个"工作" jsFiddle链接:

http://jsfiddle.net/u3rgocms/1/

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这不会起作用,因为您返回在地理编码器范围内调用的内部函数中的值。您可以将replace函数放在返回字符串的位置。请记住,如果将以异步方式调用地理编码调用,则结果将起作用。这是作为解锁功能实现的,因此您的主要业务逻辑不会等到响应准备就绪。

答案 1 :(得分:0)

感谢您的帮助。

我的工作代码是:

getLatLong('Bahnhofplatz, 8000 Zürich', function(x){
    $('#divResult').replaceWith(x[0]);
});

//$("#divResult").replaceWith("asdsadsadsad");

function getLatLong(address, callback) {
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        address : address, 
        region: 'no'
    },
    function(results, status) {
        if (status.toLowerCase() == 'ok') {
            var coords = new google.maps.LatLng(
                results[0]['geometry']['location'].lat(),
                results[0]['geometry']['location'].lng()
                );
            var latlng = [coords.lat() , coords.lng()];
            callback(latlng);
            }
        }
    );
};