2012-04-13 10 views
1

ich die folgende Funktion mit der Erhebung auf Google Maps zu erhalten:Objekt hat keine Methode „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); 
     } 
    }); 
} 

Ich Uncaught TypeError: Object 65 has no method 'charAt' bekommen, wenn ich irgendwo auf der Karte klicken und ich weiß nicht, Wie soll ich dieses Problem beheben? parseInt(s) druckt zum Beispiel 44, je nachdem, wo Sie auf die Karte klicken. Wenn ich auf den Ozean klicke, wird beispielsweise -4837 angezeigt, und es ist nur das Minuszeichen, das ich identifizieren möchte, wenn es in dieser Zeichenfolge vorhanden ist.

Irgendwelche Ideen, wie ich dieses Problem beheben kann?

Vielen Dank im Voraus.

+1

möglich Duplikat von [Objekt hat keine Methode Javascript] (http://stackoverflow.com/questions/4905028/object-has-no-method-javascript) Bitte hören Sie auf die gleiche Frage immer wieder mit Änderungen an der fehlender Methodenname - der gleiche exakte Grund ** gilt für alle, und die Logik, sie alle zu lösen, ist ** genau ** in jedem Fall gleich. Wenn Sie darauf bestehen, die Frage immer und immer wieder zu duplizieren, bleibt mir nichts anderes übrig, als sie für die Aufmerksamkeit der Moderatoren zu markieren. Wenn Sie tatsächlich die Antworten zu den Posts lesen, die Sie duplizieren, können Sie es herausfinden. –

+1

Es ist eine Zahl, keine Zeichenfolge. –

Antwort

3

Zahlen haben keine "charAt()" -Methode für ihren Prototyp, aber Strings tun.

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

Die Funktion parseInt() gibt eine Zahl zurück. Sie müssen es zuerst explizit in eine Zeichenfolge konvertieren.

Warum es ist, dass Sie versuchen, eine Nummer in erster Linie zu machen, ist ein wenig mysteriös.

+0

(Die Angabe eines Radix wird die heimtückischen Octaliens abwehren!) –

+0

Vielen Dank! :) Ich akzeptiere deine Antwort, sobald ich kann – Erik

+0

@ pst ja, das ist wahr, aber in diesem speziellen Fall scheint es wahrscheinlich, dass das beste, was zu tun ist nicht nennen 'parseInt() 'überhaupt. – Pointy

1
parseInt(s).charAt(0) 

Sie ein String-Parsing und eine ganze Zahl zurückkehrt, und dann charAt versuchen, ruft eine ganze Zahl, die auch nicht gut funktionieren. Sie sollten charAt aufrufen, bevor Sie es analysieren.

Verwandte Themen