PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Javascript Variable außerhalb einer Funktion
Beitrag
<blockquote data-quote="mindraper" data-source="post: 2388198" data-attributes="member: 115163"><p>moinsen,</p><p></p><p>einfach alle variablen im gültigkeitsbereich von address() deklarieren, nicht erst innerhalb des callbacks von geocoder.geocode().</p><p></p><p>Also statt</p><p></p><p></p><p>einfach so</p><p>[CODE]function address() {</p><p> var zip = $("#inputZip").val(),</p><p> geocoder = new google.maps.Geocoder(),</p><p> lat,</p><p> lon;</p><p> </p><p> geocoder.geocode({'address': zip}, function(results, status) {</p><p> if (status === google.maps.GeocoderStatus.OK) {</p><p> lat = results[0].geometry.location.lat();</p><p> lon = results[0].geometry.location.lng();</p><p> } else {</p><p> alert("Something got wrong " + status);</p><p> }</p><p> });</p><p> alert(lat +" x "+lon);</p><p>}[/CODE]</p><p></p><p>die callback funktion, die als zweites argument an geocoder.geocode() übergeben wird eröffnet natürlich einen neuen gültigkeitsbereich, der darin deklarierte variablen nach außen hin wieder abschirmt. daher kann dein äußeres alert() die inneren variablen natürlich nicht sehen.</p><p></p><p>ein weiterer fehlergrund kann sein (vermutung, hab gerade nicht im kopf ob der geocoder asynchron arbeitet – ich gehe aufgrund des API aber mal schwer davon aus) bzw. ist mit relativ hoher sicherheit, dass dein äußeres alert() ausgeführt wird, bevor der geocoder eine antwort gesendet hat. damit sind die variablen "lat" und "lon" natürlich undefined zur zeit des aufrufs vom äußeren alert(). in diesem fall als test bitte das äußere alert() ebenfalls innerhalb der callback funktion aufrufen.</p><p></p><p>übrigens erzeugst du in deinem code eine neue globale variable namens "lon", da diese nicht mit einem var-statement deklariert wird. ist in meinem beispiel bereinigt. du solltest generell das erzeugen von globalen variablen <strong>so weit wie irgend möglich</strong> (also im ernstfall bis auf maximal eine einzige!) vermeiden, da diese den globalen namensraum (window) "zumüllen" und es extrem leicht passieren kann, dass sie unabsichtlich überschrieben werden. das führt ab einer gewissen menge von globalen variablen i. d. r. zu fehlern, die extrem schwer zu debuggen sind.</p><p></p><p>hoffe das hilft</p></blockquote><p></p>
[QUOTE="mindraper, post: 2388198, member: 115163"] moinsen, einfach alle variablen im gültigkeitsbereich von address() deklarieren, nicht erst innerhalb des callbacks von geocoder.geocode(). Also statt einfach so [CODE]function address() { var zip = $("#inputZip").val(), geocoder = new google.maps.Geocoder(), lat, lon; geocoder.geocode({'address': zip}, function(results, status) { if (status === google.maps.GeocoderStatus.OK) { lat = results[0].geometry.location.lat(); lon = results[0].geometry.location.lng(); } else { alert("Something got wrong " + status); } }); alert(lat +" x "+lon); }[/CODE] die callback funktion, die als zweites argument an geocoder.geocode() übergeben wird eröffnet natürlich einen neuen gültigkeitsbereich, der darin deklarierte variablen nach außen hin wieder abschirmt. daher kann dein äußeres alert() die inneren variablen natürlich nicht sehen. ein weiterer fehlergrund kann sein (vermutung, hab gerade nicht im kopf ob der geocoder asynchron arbeitet – ich gehe aufgrund des API aber mal schwer davon aus) bzw. ist mit relativ hoher sicherheit, dass dein äußeres alert() ausgeführt wird, bevor der geocoder eine antwort gesendet hat. damit sind die variablen "lat" und "lon" natürlich undefined zur zeit des aufrufs vom äußeren alert(). in diesem fall als test bitte das äußere alert() ebenfalls innerhalb der callback funktion aufrufen. übrigens erzeugst du in deinem code eine neue globale variable namens "lon", da diese nicht mit einem var-statement deklariert wird. ist in meinem beispiel bereinigt. du solltest generell das erzeugen von globalen variablen [B]so weit wie irgend möglich[/B] (also im ernstfall bis auf maximal eine einzige!) vermeiden, da diese den globalen namensraum (window) "zumüllen" und es extrem leicht passieren kann, dass sie unabsichtlich überschrieben werden. das führt ab einer gewissen menge von globalen variablen i. d. r. zu fehlern, die extrem schwer zu debuggen sind. hoffe das hilft [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 7, ▼ = 3, ◇ = 2 und die Summe von ▲ und ▼ durch ◇ geteilt wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Javascript Variable außerhalb einer Funktion
Oben