私には機能があります
function getCustomAddress() {
alert(results[i].formatted_address)
}
alert(results[i].formatted_address)
別の関数で定義されています。getCustomAddress で未定義であることは明らかです。この問題を解決して値を警告するにはどうすればよいですか。フィドルも設定しました。
私には機能があります
function getCustomAddress() {
alert(results[i].formatted_address)
}
alert(results[i].formatted_address)
別の関数で定義されています。getCustomAddress で未定義であることは明らかです。この問題を解決して値を警告するにはどうすればよいですか。フィドルも設定しました。
jsFiddle をチェックアウトしました。結果は ajax リクエストとして取得されます。結果をグローバル スコープの変数に格納し、タイムアウトを設定して結果を取得する必要があります。ジオコーダー リクエストの終了前に関数を実行し、results 変数に渡すこともできます。
geocoder.geocode(geocoderRequest, function (results, status) {
// execute your function here. getCustomAddress(result)
}
私が行った変更を確認してください。 http://jsfiddle.net/KEdrq/7/
コード変更のまとめ。
var _results;
function initialize() {
.
.
.
google.maps.event.addListener(marker, 'dragend', function (e) {
getAddress(e.latLng);
setTimeout('getCustomAddress(0);', 500);
})
function getAddress(latLng) {
if (!geocoder) {
geocoder = new google.maps.Geocoder();
}
var geocoderRequest = {
latLng: latLng
}
geocoder.geocode(geocoderRequest, function (results, status) {
_results = results;
.
.
.
function getCustomAddress(i) {
alert(_results[i].formatted_address)
}
getCustomAddress 関数で結果 ID を渡す代わりに、for ループを作成してすべての結果を警告することができます。
関数パラメーターとして渡すだけです
function getCustomAddress(result) {
alert(result.formatted_address)
}
そのため、関数を呼び出すときは、1 つのパラメーターを指定する必要があります: getCustomAddress(results[i]); 例えば
関数を使用してプライベート スコープを作成し、そこですべてのグローバル変数を定義できます。
(function(){
var results = [];
function getCustomerAdress(){
//... call result etс
}
function set result(){
//... set result etc
}
// some code for initialization, setting onload handlers etc
})();