javascript 中的变量 while 不断重置
Variables in javascript while keeps resetting
我在这段代码中有一个 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,因为我需要来自数据库的一些信息,要添加地图(Google 地图),我需要使用 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},
});
您正在硬编码 $lat[$b] 从 PHP 到 javascript 文字的值。
结果是这样的:
new google.maps.LatLng("lat of b",
您应该将 php 变量编码为 javascript 变量而不是文字:
var lat = <?php echo json_encode($lat); ?>;
var b = <?php echo json_encode($b); ?>;
while(i<5) {
... actual code
从 PHP 开始,您将创建一个 javascript 变量而不是文字。
请记住,页面经过 2 个阶段。
- 计算 PHP 代码的服务器端渲染。
- javascript 评估的客户端代码。
您很可能还需要为 $lat 创建一个 javascript 变量。
我在这段代码中有一个 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,因为我需要来自数据库的一些信息,要添加地图(Google 地图),我需要使用 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},
});
您正在硬编码 $lat[$b] 从 PHP 到 javascript 文字的值。 结果是这样的:
new google.maps.LatLng("lat of b",
您应该将 php 变量编码为 javascript 变量而不是文字:
var lat = <?php echo json_encode($lat); ?>;
var b = <?php echo json_encode($b); ?>;
while(i<5) {
... actual code
从 PHP 开始,您将创建一个 javascript 变量而不是文字。
请记住,页面经过 2 个阶段。
- 计算 PHP 代码的服务器端渲染。
- javascript 评估的客户端代码。
您很可能还需要为 $lat 创建一个 javascript 变量。