从函数内部获取Javascript变量

时间:2014-08-02 16:35:30

标签: javascript jquery google-maps

我是编码的新手,正在玩谷歌地图。我在html窗口中设置了我的地图,并且我有一个不同poi的旋转木马,我已将其硬编码到地图中。我希望poi标记根据旋转木马中可见的位置进行更改。我已经能够检索活动轮播项目(this.item),但无法从该函数中获取变量。我感谢任何帮助。

navigator.geolocation.getCurrentPosition(function(position) {
        this.pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
         this.item =  $('#this-carousel-id .carousel-inner .item.active').attr("data-id");

        markerCurrentPosition = new google.maps.Marker({
            map: map,
            position: pos,
            icon: currentPositionIcon,
        });
        map.setCenter(pos);
        }, function() {
            handleNoGeolocation(true);
    });

    // watch for user's current position
    watchId = navigator.geolocation.watchPosition(updateUserPosition);

} else {
    // Browser doesn't support Geolocation
    handleNoGeolocation(false);
}

2 个答案:

答案 0 :(得分:0)

要从函数中取出变量,必须影响函数范围之外的变量......例如:

var t = {};

function test() {
   t["out"] = 1;
}

function test2() {
   console.log(t["out"]);
}


test2();
test();
test2();

函数test影响对象t内的变量。然后函数test2可以读取out中存储的内容。在您的情况下,变量可以存储在其他功能可访问的其他位置。实现这一目标的最简单方法是将变量存储在window变量中。但强烈建议不要这样做,因为它可以被任何其他函数/脚本覆盖。

由于您是javascript的新手,您应该阅读有关异步函数的更多信息。

答案 1 :(得分:0)

this.item不是变量。 this是一个对象,item是对象中属性的键。使用语法时:

this.item = something;

您要将key:value对(属性)分配到this对象,其值为something

如果您将对象视为字符串,它将如下所示:

{"item":"something"}

要在函数外部使用值,可以创建全局对象,并将值放在全局对象中。

var objGlobalForValues = {}; //Create a global object available globally

    navigator.geolocation.getCurrentPosition(function(position) {
         .... Deleted to minimize code
         var myInfo =  $('#this-carousel-id .carousel-inner .item.active').attr("data-id");

        objGlobalForValues['myPropertyName'] = myInfo;

        .... Deleted to minimize code

}

有关JavaScript对象的信息,请参阅此文档:

Working With Objects - Mozilla