如何访问jquery块中设置的javascript变量?

时间:2013-05-08 11:24:57

标签: javascript jquery asp.net

我在javascript函数中遇到问题,有两个变量在全局函数范围内声明并在jquery插件中设置。如何从jquery中获取这些变量值。

 function GetDirectionFromCurrentLocation(StoreAddress) {
var positionStore = null;
var positionCurrent = null;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': StoreAddress }, function (results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        positionStore = results[0].geometry.location;
    }
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            positionCurrent = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        });
    }

});
window.open("http://maps.google.com/maps?saddr=" + positionCurrent + "&daddr=" + positionStore + "&hl=en&output=html");
 }

这些变量始终为null。

3 个答案:

答案 0 :(得分:0)

您的地理编码调用似乎是异步的,当您的代码到达窗口打开调用时,后台作业未完成。

function GetDirectionFromCurrentLocation(StoreAddress) {
    var positionStore = null;
    var positionCurrent = null;
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': StoreAddress }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            positionStore = results[0].geometry.location;
        }
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                positionCurrent = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

            });
        }

        if (positionCurrent && positionStore) {
            window.open("http://maps.google.com/maps?saddr=" + positionCurrent + "&daddr=" + positionStore + "&hl=en&output=html");
        }
    });

 }

答案 1 :(得分:0)

将您的window.open电话移至匿名函数内。您的变量为null,因为在调用匿名函数之前调用了window.open代码行。

答案 2 :(得分:0)

我建议你在jQuery函数中打开新窗口,因为它需要同步才能获得正确的值。