【发布时间】:2015-08-30 17:40:04
【问题描述】:
我在这段代码中有一个while循环:
while (i < 5)
{
var pos = new google.maps.LatLng(<?php echo json_encode($lat[$b]); ?>,<?php echo json_encode($lon[$b]);?>);
var marker = new MarkerWithLabel({
position: pos,
draggable: true,
raiseOnDrag: true,
map: map,
icon: 'icon.png',
labelContent: <?php echo json_encode($unidad[$b]); $b=$b+1;?>,
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 0.75},
});
google.maps.event.addListener(marker, "click", function (e) { iw1.open(map, this); });
i++;
}
现在,让我解释一下代码和发生了什么。首先,我使用 JavaScript 和 PHP,因为我需要来自数据库的一些信息,并且要添加地图(谷歌地图),我需要使用 javascript。
在第一轮中,$b 的值从 0 变为 1,但经过第一个循环后,值再次重置为 0。 $b 不是默认取 0,因为如果我在 while 循环之前声明 $b=6,那么 $b 的值将始终为 6 和 7。
我做错了什么?或者我应该怎么做?任何帮助将不胜感激。由于英语不是我的母语,如有任何错误请见谅。
这是我的新代码,我只是将数组从 php 传递给 javascript(我不知道它这么简单)这是新代码:
var lat = <?php echo json_encode($lat)?>;
var lon = <?php echo json_encode($lon)?>;
var unidad = <?php echo json_encode($unidad)?>;
while (i < <?php echo json_encode($a)?>)
{
var pos = new google.maps.LatLng(lat[i],lon[i]);
var marker = new MarkerWithLabel({
position: pos,
draggable: true,
raiseOnDrag: true,
map: map,
icon: 'icon.png',
labelContent: unidad[i],
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 0.75},
});
【问题讨论】:
-
您假设您正在为 while 循环的每次迭代更新
$b的值,但事实并非如此。请记住,PHP 在服务器端运行——所以当您的客户端/用户接收到文件时,$b的值已经确定。您必须将$b存储为 JS 变量并按此递增。 -
谢谢,我不知道。当我开始使用 php+javascript 时,我仍然不知道很多事情。如您所见,我更新了代码,现在它运行完美。
标签: javascript php while-loop counter