错误:无用的setTimeout调用(参数周围缺少引号?)



Firefox给出一个错误"错误:无用的setTimeout调用(缺少引号围绕参数?)",而在Chrome其工作正常。我想做一个地址数组,它来自搜索结果作为'searchResultBox'div元素中的数据。现在我将这些地址一个接一个地传递给Google map API来获取地址。我使用setTimeout来克服谷歌的"超过查询限制"错误。在Chrome浏览器的工作很好,但火狐给出了错误"错误:无用的setTimeout调用(缺少引号围绕参数?)"。我该怎么办?

var resturantids ='';
var logititude ='';
var  latitude ='';
var add ='';
var rest_name ='';
jQuery('.searchResultBox').each(function(){
resturantids += ''+jQuery(this).attr('data-resturantidsarr')+';';
logititude += ''+jQuery(this).attr('data-logtiresarr')+';';
latitude += ''+jQuery(this).attr('data-latiresarr')+';';
add += ''+jQuery(this).attr('data-addresses')+';';
rest_name += ''+jQuery(this).attr('data-listing-name')+';';
});
var resturantidsarr = new Array();
var logtiresarr=new Array();    
var latiresarr= new Array();
var addresses = new Array();
var resturantname = new Array(); 
resturantidsarr = resturantids.split(";");
logtiresarr = logititude.split(";");
latiresarr = latitude.split(";");
addresses = add.split(";");
resturantname = rest_name.split(";");
var popcontentdisplay;
var c=0;
var b=0;
var i=0;
var delaytime = 10000;
var nextAddress = 0;
var infowindow = new google.maps.InfoWindow();
var latlng = new google.maps.LatLng(latiresarr[0], logtiresarr[0]);
var mapOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var geocoder = new google.maps.Geocoder(); 
var map = new google.maps.Map(jQuery('#map_canvas')[0], mapOptions);
var bounds = new google.maps.LatLngBounds();

function geocodeAddress(resturantid, logtires, latires, address, resturant, next) { 
console.log(nextAddress);
console.log(address);
geocoder.geocode({'address': address}, function (results,status)    { 
if (status == google.maps.GeocoderStatus.OK) {
var addr = results[0].formatted_address;           
var p = results[0].geometry.location;
var addr2 = address.replace(/+/g, ' ');
popcontentdisplay=resturant+" - n"+addr2;
console.log(addr2);
console.log(' ');
console.log(' ');
resturantid2=resturantid;
if(logtires == 0 && latires == 0){ 
latires = results[0].geometry.location.lat();
logtires = results[0].geometry.location.lng();
}
var latlng = new google.maps.LatLng(latires, logtires);
var strpara;            
var digits2=resturantid2.toString().length; 
if( digits2 >= 5  ) {
strpara='id='+resturantid2;
} else   {
strpara='post_id='+resturantid2;
}                   
var contentString =  '<div> <a href="<?php echo site_url();  ?>/search-detail/?'+strpara+'"> '+popcontentdisplay +' </a> </div>';
b++;

var marker =  new google.maps.Marker({
position: latlng,
map: map,
clickable: true,               
title: popcontentdisplay,
});
google.maps.event.addListener(marker, 'click', getInfoCallback(map, contentString));
nextAddress++;
}
else {
if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
delaytime += 5000;
//console.log(status);
} else {
console.log(status);
//delaytime += 10000;
console.log(nextAddress);
nextAddress++;
}   
}
next();
});
}
function theNext() {
if (nextAddress < addresses.length-1) {         
setTimeout(geocodeAddress(resturantidsarr[nextAddress],logtiresarr[nextAddress],latiresarr[nextAddress],addresses[nextAddress],resturantname[nextAddress], theNext), delaytime);  
} 
}
theNext();
function getInfoCallback(map, content) {
var infowindow = new google.maps.InfoWindow({content: content});
return function() {
// infowindow.setContent(content); 
infowindow.open(map, this);
};
}

您正在调用函数geocodeAddress()并将该调用的返回值(即undefined)传递给setTimeout(),这将不起作用。

你的意思可能是:

setTimeout(function () { geocodeAddress(...); }, delaytime);

最新更新