2012-04-13 67 views
1

我使用下面的函數來獲得對谷歌地圖的海拔:我越來越Uncaught TypeError: Object 65 has no method 'charAt'對象沒有方法「的charAt」

function getElevation(event) { 
    var locations = []; 
    var clickedLocation = event.latLng; 
    locations.push(clickedLocation); 

    var positionalRequest = { 
     'locations': locations 
    } 

    elevator.getElevationForLocations(positionalRequest, function(results, status) { 
     if(status == google.maps.ElevationStatus.OK) { 
      var s = results[0].elevation; 

      if(results[0]) { 
       $('#elevation').html(parseInt(s).charAt(0) + ' meter'); 
      } else { 
       alert('Inget resultat hittades'); 
      } 
     } else { 
      alert('Det gick inte att hitta höjdskillnaden på grund av följande: ' + status); 
     } 
    }); 
} 

當我點擊地圖上的某個地方,我不知道我該如何解決這個問題。 parseInt(s)根據您在地圖上點擊的位置打印示例44。如果我點擊海洋,它會顯示例如-4837,這只是我想要確定它是否存在於此字符串中的減號字符。

如何解決此問題的任何想法?

在此先感謝。

+1

[Object has no method Javascript](http://stackoverflow.com/questions/4905028/object-has-no-method-javascript)可能的重複請停止詢問同一個問題一遍又一遍地修改缺少方法的名稱 - **同樣的確切原因**適用於它們全部,並且解決它們的所有邏輯**在每種情況下完全相同。如果你堅持一遍又一遍地重複這個問題,我將別無選擇,只能開始舉報他們的版主注意力。如果你真的**閱讀**你複製的帖子的答案,你可以弄明白。 – 2012-04-13 00:25:15

+1

這是一個數字,而不是一個字符串。 – 2012-04-13 00:26:38

回答

3

數字在其原型上沒有「charAt()」方法,但字符串具有。

$('#elevation').html(('' + parseInt(s)).charAt(0) + ' meter'); 

parseInt()函數返回一個數字。你必須首先明確地將它轉換爲字符串。

爲什麼這是你試圖讓它成爲一個數字首先是有點神祕。

+0

(指定一個基數將避開陰險的Octaliens!) – 2012-04-13 00:30:58

+0

非常感謝! :)我會盡快接受你的回答 – Erik 2012-04-13 00:36:39

+0

@pst是的,這是真的,但在這種特殊情況下,最好的辦法可能不是調用'parseInt()'。 – Pointy 2012-04-13 00:36:51

1
parseInt(s).charAt(0) 

您解析字符串並返回一個整數,然後試圖調用的charAt上一個整數,這將無法正常使用。你應該在解析它之前調用charAt。