我有一个函数
function getCustomAddress() {
alert(results[i].formatted_address)
}
alert(results[i].formatted_address)
在另一个函数中定义。这显然意味着它在getCustomAddress中未定义,那么我如何解决这个问题并警告值呢?我也准备了一把小提琴。
你可以把它作为函数参数传递
function getCustomAddress(result) {
alert(result.formatted_address)
}
所以当你调用这个函数时,你需要提供一个参数:getCustomAddress(结果[我]);例如
你可以用一个函数创建一个私有作用域,并在那里定义你所有的全局变量:
(function(){
var results = [];
function getCustomerAdress(){
//... call result etс
}
function set result(){
//... set result etc
}
// some code for initialization, setting onload handlers etc
})();
我检查了jsFiddle,结果被作为ajax请求获取。您需要将结果存储在具有全局作用域的变量中,然后设置超时以获取结果。您还可以在geocoder请求结束之前执行函数,并将结果变量传递给它。
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)
}
您可能希望创建一个for循环来警告所有结果,而不是在getCustomAddress函数中传递结果id。