Javascript 每次只运行一次

Javascript 每次只运行一次,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,首先让我解释一下。我在页面上有几个地址,我将它们放入一个数组中。然后我想检查这个数组,并用它的经度和纬度替换每个地址 问题是我的尝试只运行了一次 $(function () { var addr = 0; var shops = []; var addressPoint; var latlng = new google.maps.LatLng(38, -97); var myOptions = { zoom: 8, center: latlng, mapT

首先让我解释一下。我在页面上有几个地址,我将它们放入一个数组中。然后我想检查这个数组,并用它的经度和纬度替换每个地址

问题是我的尝试只运行了一次

$(function () {
 var addr = 0;
 var shops = [];
 var addressPoint;
 var latlng = new google.maps.LatLng(38, -97);
 var myOptions = {
     zoom: 8,
     center: latlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 window.onload = function () {
     var options = [];
     $('.address').each(function () {
         if (!$(this).is(":empty")) {
             options.push($(this).text());
             txt = $(this).text();
         } else {}
     });
     alert(options);
     $.each(options, function () {
         var addr = ("'" + this + "'");
         searchAddr(addr);
     });

     function searchAddr(addr) {
         $('#map_canvas').gmap({
             'callback': function () {
                 var self = this;
                 alert(addr);
                 self.search({
                     'address': addr
                 }, function (results, status) {
                     if (status === 'OK') {
                         addressPoint = results[0].geometry.location;
                         alert(addressPoint);
                         options = $.map(options, function () {
                             return results[0].geometry.location;
                         });
                         self.get('map').panTo(results[0].geometry.location);
                         alert(options);
                         return false;
                     }
                 });
             }
         });
     }
 };
 }(jQuery));

你用网络嗅探器确认它只发射了一次吗?因为看起来您正在用
$.map
命令中的单个值替换列表中的每个值。如果将地址点放在不同的数组中,可能会有所帮助:

$(function () {
 var addr = 0;
 var shops = [];
 var addressPoint;
 var latlng = new google.maps.LatLng(38, -97);
 var myOptions = {
     zoom: 8,
     center: latlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 var points = [];
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 window.onload = function () {
     var options = [];
     $('.address').each(function () {
         if (!$(this).is(":empty")) {
             options.push($(this).text());
             txt = $(this).text();
         } else {}
     });
     alert(options);
     $.each(options, function () {
         var addr = ("'" + this + "'");
         searchAddr(addr);
     });

function searchAddr(addr) {
         $('#map_canvas').gmap({
             'callback': function () {
                 var self = this;
                 alert(addr);
                 self.search({
                     'address': addr
                 }, function (results, status) {
                     if (status === 'OK') {
                         addressPoint = results[0].geometry.location;
                         alert(addressPoint);
                         points.push(addressPoint);
                         });
                         self.get('map').panTo(addressPoint);
                         alert(points);
                         return false;
                     }
                 });
             }
         });
     }
};
 }(jQuery));

你用网络嗅探器确认它只发射了一次吗?因为看起来您正在用
$.map
命令中的单个值替换列表中的每个值。如果将地址点放在不同的数组中,可能会有所帮助:

$(function () {
 var addr = 0;
 var shops = [];
 var addressPoint;
 var latlng = new google.maps.LatLng(38, -97);
 var myOptions = {
     zoom: 8,
     center: latlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 var points = [];
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 window.onload = function () {
     var options = [];
     $('.address').each(function () {
         if (!$(this).is(":empty")) {
             options.push($(this).text());
             txt = $(this).text();
         } else {}
     });
     alert(options);
     $.each(options, function () {
         var addr = ("'" + this + "'");
         searchAddr(addr);
     });

function searchAddr(addr) {
         $('#map_canvas').gmap({
             'callback': function () {
                 var self = this;
                 alert(addr);
                 self.search({
                     'address': addr
                 }, function (results, status) {
                     if (status === 'OK') {
                         addressPoint = results[0].geometry.location;
                         alert(addressPoint);
                         points.push(addressPoint);
                         });
                         self.get('map').panTo(addressPoint);
                         alert(points);
                         return false;
                     }
                 });
             }
         });
     }
};
 }(jQuery));

尝试替换console.log(options)的警报(options),并告知控制台显示了什么(firefox中的firebug和chrome中的dev tools)
资源被解释为图像,但使用MIME类型text/html传输:http://maps.googleapis.com/maps/gen_204?ev=api_viewport&cad=src:apiv3". [Q,Q Ua:37.7654999999VA:-122.39669270000002,Q,Q Ua:37.76549999999VA:-122.39669270000002,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q]
然后
资源被解释为图像,但使用MIME类型e传输
什么只运行一次?
$。每个(选项,函数(){var addr=(“'”+this+“””);searchAddr(addr);})它将运行“searchAddr”功能一次,并使原始数组中的每一项显示相同的值。尝试替换console.log(选项)的警报(选项),并告诉控制台显示什么(firefox中的firebug和chrome中的开发工具)
资源解释为图像,但使用MIME类型text/html传输:"http://maps.googleapis.com/maps/gen_204?ev=api_viewport&cad=src:apiv3". [Q,Q Ua:37.7654999999VA:-122.39669270000002,Q,Q Ua:37.76549999999VA:-122.39669270000002,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q]
然后
资源被解释为图像,但使用MIME类型e传输
什么只运行一次?
$。每个(选项,函数(){var addr=(“'”+this+“”);searchAddr(addr);});
它将运行“searchAddr”功能一次,并使原始数组中的每一项显示相同的值。只需尝试您的代码,当它提醒points数组时,只有一个值。而且它只被提醒一次,因此它似乎只运行一次。我在控制台中看到的是
资源被解释为I但使用MIME类型text/html传输的图像:http://maps.googleapis.com/maps/gen_204?ev=api_viewport&cad=src:apiv3".e
奇怪的是,它没有崩溃。但我设法修复了它,使用了与您类似的代码。感谢您刚刚尝试了您的代码,当它提醒points数组时,只有一个值。而且它只被提醒了一次,所以它似乎只运行了一次。我在控制台中看到的是
资源被解释为Image,但tr使用MIME类型text/html进行翻译:http://maps.googleapis.com/maps/gen_204?ev=api_viewport&cad=src:apiv3“.e
奇怪的是它没有坏。但我设法修复了它,使用了与您类似的代码。谢谢