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