2014-07-06 43 views
3

我試圖在下面的JavaScript中打印出latitude(lat)變量。如何在不同的功能中使用變量?

我該如何參考lat變量? this.lat, that.lat, vicinity.lat等?

在我的javascript我有

var Vicinity = function (pubReference, sessionId, done, err) { 
    this.ad = { 
     getBannerHtml: function() { 
      console.log(this.lat); // how do I refer to the lat variable? 
     } 
    }; 

    this.init = function (done, err) { 
     var that = this; 
     this.getLatLng(that, function (position) { 
      that.lat = position.coords.latitude; 
     }, err); 
     if (typeof done === 'function') 
      done(this); 
    }; 

    this.init(done, err); 
}; 

$(document).ready(function() { 
    var data = new Vicinity(pubReference, sessionId, 
     function (result) { 
      $("#sticky").html(result.ad.getBannerHtml()); 
     } 
    ); 
}); 
+0

如果你沒有「自己的」內嵌框架,即它是在同一個域中父頁面,則無法從內部它http://stackoverflow.com/questions/17142285/access-iframe訪問變量-content-from-parent-jquery –

+0

你錯了,如果你認爲getBannerHtml中的'this'指向'Vicinity'或由'Vicinity'創建實例,則指'this.ad'對象。所以,如果你將它緩存到變量'that'中會更好。看看[Demo](http://jsfiddle.net/GKDev/U5xZ4/) – Givi

+0

函數getBannerHtml:function()我如何引用lat和lon變量?這個,那個.lat,nearby.ad.lat? – grabury

回答

0

你就要成功了。您已在init()中聲明thatthis。只要做到在整個功能和它應該工作:

var Vicinity = function (pubReference, sessionId, done, err) { 
    var that = this; 
    this.ad = { 
     getBannerHtml: function() { 
      console.log(that.lat); // how do I refer to the lat variable? 
     } 
    }; 

    this.init = function (done, err) { 
     var that = this; 
     this.getLatLng(that, function (position) { 
      that.lat = position.coords.latitude; 
     }, err); 
     if (typeof done === 'function') 
      done(this); 
    }; 

    this.init(done, err); 
}; 

$(document).ready(function() { 
    var data = new Vicinity(pubReference, sessionId, 
     function (result) { 
      $("#sticky").html(result.ad.getBannerHtml()); 
     } 
    ); 
}); 
0

您還可以通過使用「應用」功能調用您附近的範圍getBannerHtml方法。 「this」變量設置爲您傳遞的對象。

$(document).ready(function() { 
    var data = new Vicinity(pubReference, sessionId, 
     function (result) { 
      $("#sticky").html(result.ad.getBannerHtml.apply(result)); 
     } 
    ); 
}); 
0

我已經張貼在另一篇文章卻得到了另一種思路;) 這是一種明顯的,但工程。

getBannerHtml: function(lat, lon) { 
    return '<iframe src="http://foo.com?pr=34&lat'+ lat +'=&lon=' + lon + '"></iframe>'; 
} 

$(document).ready(function() { 
    var pubReference = 1; 
    var sessionId = "1"; 
    var data = new Vicinity (pubReference, sessionId, 
    function(result) { 
     $("#sticky").html(result.ad.getBannerHtml(result.lat, result.lon)); 
    } 
); 
}); 

您也可以使用「應用」功能調用您的附近範圍內的getBannerHtml方法。 「this」變量設置爲您傳遞的對象。

$(document).ready(function() { 
    var pubReference = 1; 
    var sessionId = "1"; 
    var data = new Vicinity(pubReference, sessionId, 
     function (result) { 
      $("#sticky").html(result.ad.getBannerHtml.apply(result)); 
     } 
    ); 
}); 
+0

FYI:從http://stackoverflow.com/questions/24594306/how-to-pass-values-to-a -功能 – Shog9