Javascript 长度为的阵列警报0不确定原因

Javascript 长度为的阵列警报0不确定原因,javascript,jquery,Javascript,Jquery,我对JQuery非常陌生,我正在尝试创建一个事件,这样当单击表行时它会做一些事情,但它会有一个for循环,但这不起作用,所以我删除了循环并发出警报,以查看数组中有多少项,它会向0发出警报。我不知道为什么,在页面加载上,脚本从我的数据库生成标记,并将它们加载到屏幕左侧的地图上(工作正常,如预期的那样),制作一个表格,显示每个站点所在的街道,当您单击表格行时,它应该居中并缩放标记(我可以自己计算出该部分)但现在它告诉我阵列中没有任何东西,我不知道为什么。谢谢 <?php require_o

我对JQuery非常陌生,我正在尝试创建一个事件,这样当单击表行时它会做一些事情,但它会有一个
for
循环,但这不起作用,所以我删除了循环并发出警报,以查看数组中有多少项,它会向0发出警报。我不知道为什么,在页面加载上,脚本从我的数据库生成标记,并将它们加载到屏幕左侧的地图上(工作正常,如预期的那样),制作一个表格,显示每个站点所在的街道,当您单击表格行时,它应该居中并缩放标记(我可以自己计算出该部分)但现在它告诉我阵列中没有任何东西,我不知道为什么。谢谢

  <?php
require_once('config.inc.php');
require_once($rootdir . $dirsubfolder . 'navbar.php');
include($rootdir . $dirsubfolder . 'php/findmarkers.php');
?>
<script>

$(document).ready(function() {
var arrMarkers = [];
var zoom = 6;
var initialLocation;
var map;
var markersArray = new Array();

$("table#listOfStops").find('tr').each(function() {
  $(this).on('click', function() {

      alert(arrMarkers.length);


  });
});

$(window).resize(function () {
    var h = $(window).height(),
        offsetTop = 230; // Calculate the top offset
    $('#gmaps').css('height', (h - offsetTop));
  }).resize();
  loadScript();
});
function initialize() {
  geocode = new google.maps.Geocoder();
 var mapOptions = {
  zoom: 10,
  center: new google.maps.LatLng(56.7626362, -111.379652),
  mapTypeId: google.maps.MapTypeId.ROADMAP,
  disableDefaultUI: false,
  zoomControl: true,
  zoomControlOptions: {
    style: google.maps.ZoomControlStyle.LARGE
  }
};

  map = new google.maps.Map(document.getElementById('gmaps'),
  mapOptions);

  google.maps.event.addListener(map, 'click', function(event) {
    var latitude = event.latLng.lat();
    var longitude = event.latLng.lng();
    deleteOverlays();
    addMarker(event.latLng);
    updateTextFields(latitude, longitude);
  });
  <?php while($stmt -> fetch()) { ?>
  var long = "<?php echo $gLongitude ?>";
  var lati = "<?php echo $gLatitude; ?>";
  var title = "<?php echo $gTitle; ?>"
  setMarker(lati, long, title);
  <? } $stmt -> close(); $mysqli -> close();?>



}

function setMarker(lat,lon, markerTitle) {
  var latLonMarker = new google.maps.LatLng(lat,lon);
  marker = new google.maps.Marker({
    position: latLonMarker,
    map: map,
    icon: 'icon.png',
    title: markerTitle
  });
  google.maps.event.addListener(marker, 'dragend', function() {
    $('#inputLatitude').val(this.getPosition().lat());
    $('#inputLongitude').val(this.getPosition().lng());
  });
  arrMarkers.push(marker);
}


function loadScript() {
  var script = document.createElement('script');
  script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&' +
  'callback=initialize';
  document.body.appendChild(script);
}
</script>

<?php include($rootdir . $dirsubfolder . 'php/findmarkers.php'); ?>

<div style="padding-top: 5%; padding-bottom: 5%;">
<div class="container-fluid">
<div class="row-fluid">
  <div class="span3 container hero-unit">
  <h2 style="text-align: center;">Route <?php echo $gRouteNumber ?></h2>
  <h4 style="text-align: center;" class="alert-info">Begins <? echo $gArrivalTime; ?></h4>
  <br />

  <table id="listOfStops" class="table table-striped">
  <thead>
  <tr>
    <th>Stop #</th>
    <th>Street Name</th>
  </tr>
  </thead>
  <tbody>
  <?php
  $i = 0;
  while($stmt -> fetch()) {
    echo '<tr  id="' . $i . '">';
    echo '<td>' . $gStopNumber . '</td>';
    echo '<td>' . $gStreetName . '</td>';
    echo '</tr>';
  $i++;} $stmt -> close(); $mysqli -> close(); ?>  
  </tbody>
  </table>




  </div>

<div class="span9">
<div id="gmaps"></div>
</div>
</div>
</div>
</div>




<?php
require_once('footer.php');
?>

$(文档).ready(函数(){
var=[];
var-zoom=6;
var初始位置;
var映射;
var markersArray=新数组();
$(“table#listOfStops”).find('tr').each(function(){
$(此)。在('单击',函数()上){
警报(arrmakers.length);
});
});
$(窗口)。调整大小(函数(){
var h=$(窗口).height(),
offsetTop=230;//计算顶部偏移
$(#gmaps').css('height',(h-offsetTop));
}).resize();
loadScript();
});
函数初始化(){
geocode=新的google.maps.Geocoder();
变量映射选项={
缩放:10,
中心:新google.maps.LatLng(56.7626362,-111.379652),
mapTypeId:google.maps.mapTypeId.ROADMAP,
disableDefaultUI:false,
动物控制:对,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.LARGE
}
};
map=new google.maps.map(document.getElementById('gmaps'),
地图选项);
google.maps.event.addListener(映射,'click',函数(事件){
var latitude=event.latLng.lat();
var longitude=event.latLng.lng();
deleteOverlays();
添加标记(事件标记);
updateTextFields(纬度、经度);
});
var long=“”;
var lati=“”;
var title=“”
setMarker(lati、long、title);
}
功能设置标记(横向、纵向、横向){
var latLonMarker=new google.maps.LatLng(lat,lon);
marker=新的google.maps.marker({
位置:latLonMarker,
地图:地图,
图标:“icon.png”,
标题:markerTitle
});
google.maps.event.addListener(标记'dragend',function(){
$('#inputLatitude').val(this.getPosition().lat());
$('#inputLength').val(this.getPosition().lng());
});
arr标记。推(标记);
}
函数loadScript(){
var script=document.createElement('script');
script.src=https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&' +
'回调=初始化';
document.body.appendChild(脚本);
}
路线
开始

停止# 街道名称
正如我在评论中已经指出的,您在
文档就绪
函数中将
arrmakers
声明为局部变量

这意味着,
setMarker
函数中的
未定义


试着把它变成一个全局变量,你应该会做得很好。

那么你到底在哪里填写
arrmarks
?我建议使用
你甚至没有发布一个表,所以我们怎么知道
$(“表#listofstats”)。find('tr')
正在做什么?
arrMarkers
在你的“document ready”函数中声明为一个局部变量。这就是为什么它在
setMarker
中未声明的原因。试着让它成为一个全球性的,你应该很好。@ReuggniceTernium谢谢你把它作为一个答案贴出来,我会给它打分的