2017-09-05 22 views
1

我在我的地理定位程序中有以下代碼。如何從JavaScript中使用不同參數的不同位置調用相同的函數,並仍保留該函數的舊變量值?

當用戶允許的設備以獲取地理位置,該geolocation()函數被調用和geolocation功能再次傳播successPosition功能與position對象,它爲緯度和經度。在successPosition函數內部,我還需要其他變量btype(血型),因爲我正在開發一個程序來尋找最近的血型。

所以在過去,我試圖問用戶使用javascript prompt方法搜索哪種血型,但使用該方法,用戶將不得不手動輸入血型,但我想要的是讓用戶從下拉列表中選擇類型。但是如果我創建一個表單並詢問用戶類型並將對象傳遞給SuccessPosition函數,則position對象變得不確定 - 這是因爲這次我們只傳遞btype而我們沒有position。當position對象獲得通過時,另一個變量btype未定義。

請告訴我什麼是解決問題的最佳方法。

geolocation: function() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(this.successPosition, this.failurePosition, { 
     enableHighAccuracy: true, 
     timeout: 3000, 
     maximumAge: 4000 
    }); 

    } else { 
    return (false); 
    } 
}, 
successPosition: function(position) { 
    self.latitude = position.coords.latitude; 
    self.longitude = position.coords.longitude; 

    //self.btype = btype; 

    self.partial_url = ("/users?utf8=✓&longitude=" + (self.longitude) 
        + "&latitude=" + (self.latitude) 
        + "&btype=" + encodeURIComponent(self.btype)); 

    window.location = self.partial_url; 

} 
+0

將代碼放在框的邊界內以便查看它的人不必滾動太多是個好主意。 – philraj

+0

您是否將服務用作單身人士?服務的使用應允許您將btype與位置分離 – pixelbits

回答

0

successPosition功能不必負責立即設置window.location。我認爲在你的情況下最簡單的事情是讓successPosition觸發允許用戶選擇他們的血型的形式,並且具有綁定到表單元素的事件監聽器,當用戶選擇一個類型元素時調用諸如setWindowLocation之類的血型。現在你將擁有你的地理位置和你的血型。

相關問題