2016-08-28 5 views
-1

Arbeiten an einer Kartenanwendung und das macht mich verrückt. Dies funktioniert:Kann HTML-Element mit Jquery nicht aktualisieren

var myBounds = map.getBounds(); 
$("#bounds").html("My bounds are: " + myBounds); 

Aber das zeigt nur leere:

var myBounds = map.getBounds(); 
$("#bounds").html(myBounds); 

Keine Konsole Fehler in Chrome. Es sieht aus wie JQuery nicht den Rückgabewert von map.getBounds mag(), die in diesem Fall Google map Grenzen wie ((34,71679866336405, -9,207592500000032), (38,42994070565381, -0,06696750000003249))

Was falsch ist hier ?

Update: Merkwürdigerweise funktioniert das OK auch:

var myBounds2 = '((34.71679866336405, -9.207592500000032), (38.42994070565381, -0.06696750000003249))'; 
$("#bounds").html(myBounds2); 
+1

Es ist oft nützlich, sich mit Fragen Dazu gehört ein ** runnable ** [mcve] mit Stack Snippets (der '<>' Symbolleisten-Button). –

+0

Es sieht so aus, als ob das Hinzufügen des Textes in .html() Jquery oder JS zwingt, var myBounds zu evaluieren? – freeworlder

+0

Das Bit am Ende Ihrer Frage ist nicht neugierig; es wäre merkwürdig, wenn es das nicht getan hätte. –

Antwort

3

Der Rückgabewert von getBounds kein String ist, es ist ein LatLngBounds Objekt. Scheinbar passierte das Objekt direkt in html funktioniert nicht   — was genug ist, html dokumentiert nicht, dass es Objekte akzeptiert, nur Strings. Ich bin ein bisschen überrascht, dass es nicht am Ende toString darauf ruft, aber anscheinend nicht.

Da es zu bespannen Werke Umwandlung (das ist, was Sie tun, wenn Sie es in einen String anhängen), können Sie das tun, nur indem sie in die String Funktion übergeben: wie

var myBounds = map.getBounds(); 
$("#bounds").html(String(myBounds)); 
// ---------------^^^^^^^--------^ 
+1

Ich bin überrascht, das auch zu sehen, und auch überrascht, dass ich selbst nicht auf dieses Problem gestoßen bin. [Es scheint] (http://james.padolsey.com/jquery/#v=1.11.2&fn=jQuery.fn.html) Die Funktion akzeptiert einen String oder ein Objekt, das 'append' verarbeiten kann, was ich auch denke ein DOM-Knoten oder ein jQuery-Objekt. –

+0

Ja, es ist auch überraschend. Ich dachte auch, dass die Übergabe des Rückgabewerts des Objekts an eine Variable "var myBounds = map.getBounds();" automatisch mit dem String versehen würde. – freeworlder

+0

Ich akzeptierte diese Antwort, aber es beantwortet immer noch nicht die Frage, warum es wie erwartet funktioniert, wenn ich auch etwas Text in '.html()', aber nicht ohne? '$ (" # Grenzen ") .html (" Meine Grenzen sind: "+ myBounds);' OK '$ (" # Grenzen "). Html (myBounds);' Nicht OK' – freeworlder

Verwandte Themen