2012-04-13 3 views
1

Я использую следующую функцию, чтобы получить повышение на Google Maps:объект не имеет метод «Шара»

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); 
     } 
    }); 
} 

я получаю Uncaught TypeError: Object 65 has no method 'charAt', когда я нажимаю где-то на карте, и я не знаю, как я исправлю эту проблему. parseInt(s) печатает, например, 44 в зависимости от того, где вы нажимаете на карту. Если я нахожусь в океане, это показывает, например, -4837, и именно этот минус-символ я хочу определить, существует ли в этой строке.

Любые идеи о том, как я могу исправить эту проблему?

Заранее спасибо.

+1

Возможный дубликат [Объект не имеет метода Javascript] (http://stackoverflow.com/questions/4905028/object-has-no-method-javascript) Повторите один и тот же вопрос снова и снова с изменениями в имя отсутствующего метода - то же самое, что и для всех, и логика для их решения ** абсолютно одинакова в каждом случае. Если вы настаиваете на повторении вопроса снова и снова, у меня не останется выбора, кроме как начать отмечать их для внимания модератора. Если вы на самом деле ** читаете ** ответы на сообщения, которые вы дублируете, вы можете понять это. –

+1

Это число, а не строка. –

ответ

3

Номера на своем прототипе не имеют «charAt()», но строки это делают.

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

parseInt() функция возвращает число. Вы должны явно преобразовать его в строку сначала.

Почему именно вы пытаетесь сделать его номером, в первую очередь, немного загадочным.

+0

(Указание оснований будет предотвращать коварные Octaliens!) –

+0

Большое спасибо! :) Я отвечу на ваш ответ, как только смогу – Erik

+0

@pst да, это правда, но в этом конкретном случае кажется, что лучше всего не называть 'parseInt()' вообще. – Pointy

1
parseInt(s).charAt(0) 

Вы разбираем строку и возвращает целое число, а затем пытается вызвать Шара на целое число, которое не будет работать слишком хорошо. Вы должны вызвать charAt, прежде чем разбирать его.

Смежные вопросы