Javascript 为什么我能';循环后不访问数组?
使用谷歌地图API和AngularJS(1.5.8)。在循环中创建标记后,我无法在之后访问它们。initMap函数中的以下代码:Javascript 为什么我能';循环后不访问数组?,javascript,google-maps,Javascript,Google Maps,使用谷歌地图API和AngularJS(1.5.8)。在循环中创建标记后,我无法在之后访问它们。initMap函数中的以下代码: var markers = []; for(var i=0; i<10; i++){ var html = $scope.posts[i].address; var marker = new google.maps.Marker({ map: map, position: {lat: parseFloat($
var markers = [];
for(var i=0; i<10; i++){
var html = $scope.posts[i].address;
var marker = new google.maps.Marker({
map: map,
position: {lat: parseFloat($scope.posts[i].lat), lng: parseFloat($scope.posts[i].lng)}
});
markers.push(marker);
bindInfoWindow(markers[i], map, infoWindow, html);
}
markers // no error messages, nothing
console.log(markers); // still nothing
var标记=[];
对于(var i=0;i
错误:$scope.posts[i]未定义“
脚本在var html=$scope.posts[i].address;
行上抛出异常。它在该点停止运行。因此,它永远不会到达控制台.log(标记);
但是..我想-好吧,但它起作用了(地图上有标记)
你在一个循环中。一些标记正在显示,然后其中一个值未定义(不是第一个值!),因此你得到一个异常,脚本停止
您可能可以通过循环到数组的长度来解决此问题,而不是硬编码的10
项
,请稍后再考虑该错误
始终先处理第一个错误。它们通常是导致后续错误的原因。这是怎么回事:“标记//没有错误消息,什么都没有。”"?marker在将其推送到markers之前是否会返回一些内容?bindInfoWindow方法的作用是什么?请同时发布您的角度代码。或者任何其他细节,因为它看起来不清晰question@Ionut,我的意思是,在markers变量处并没有反应。我以为浏览器的控制台会显示错误或其他东西。但什么都并没有。@49volro,为什么您想这样使用它吗?这没有意义。console.log(markers);//即使是[]也没有任何东西需要输出
表示空数组或未定义
表示数组已被未定义的值覆盖。如果没有输出任何内容,则最有可能的解释是没有首先调用函数。
for(var i=0; i<10; i++){
for(var i=0; i<$scope.posts.length; i++)