87,910
社区成员
发帖
与我相关
我的任务
分享
var p;//这是我要赋值的全局变量
//这是那个函数,调用百度地图
function setmap(place,university)
{
myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(university,function(point){
if (point) {
//经纬度
var lng=point.lng;
var lat=point.lat;
p={'lng':lng,'lat':lat};//给全局变量赋值
$("#alert-div").css("display","none");
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point));
}else{
//地址未解析到
$("#alert-div").css("display","block");
}
}, place);
}
//调用函数的事件在这里
$("#university").change(function(){
university=$("#university").val();
if (place!=0&&university!=0)
{
setmap(place,university);
}
});
//alert在ajax前面,按钮事件,我就不写了,但是alert发现p得不到值
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point));
这两个语句,那么赋值语句也一定已经执行完了,但是再点击按钮输出还是未定义,不管等多长时间点击按钮都会输出未定义,
我想的和你一样,我觉得等一会就可以获取值了,但不是这样。
只有第二次触发onchange事件的时候,在点击按钮alert才能输出值
而且异步貌似可以赋值给全局变量,我用ajax,异步,在回执函数里赋值给全局变量,按钮事件写在回执函数外面,执行正常,可以获取到值。
所以说可能不是异步的事????
还是函数里的函数的问题?或者是百度地图那个函数的问题?function setmap(place,university)
{
myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(university,function(point){
if (point) {
//经纬度
var lng=point.lng;
var lat=point.lat;
p={'lng':lng,'lat':lat};//给全局变量赋值
$("#alert-div").css("display","none");
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point));
alert(p);//触发可以输出正确的值,所以我想这个函数里的其他语句都是没有问题的
//如果我对全局变量的理解正确的话,那么赋值也是正确的,但是异步导致了我不能及时得到值
}else{
//地址未解析到
$("#alert-div").css("display","block");
}
}, place);
}
var p;//这是我要赋值的全局变量
//这是那个函数,调用百度地图
function setmap(place,university)
{
myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(university,function(point){
if (point) {
//经纬度
var lng=point.lng;
var lat=point.lat;
p={'lng':lng,'lat':lat};//给全局变量赋值
$("#alert-div").css("display","none");
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point));
}else{
//地址未解析到
$("#alert-div").css("display","block");
}
}, place);
}
//调用函数的事件在这里
$("#university").change(function(){
university=$("#university").val();
if (place!=0&&university!=0)
{
alert(setmap(place,university));//alert的值是未定义
}
});
$("#button").click(function()
{
alert(p);//很抱歉我上面提到了ajax,表述不清,这里没有ajax的问题
//触发一次事件,点击按钮alert得不到值,触发两次事件才可以得到值,不过这个值我猜是第一次的值,所以说是可以获取到值,但我不能得到,我没有输出的时机,因为那个地图定位是异步的
//我想及时得到那个值,然后在按下按钮之后可以alert出那个值,应该怎么办?
});