【问题标题】:Variables in javascript while keeps resetting [duplicate]javascript中的变量,同时不断重置[重复]
【发布时间】: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


【解决方案1】:

您将 $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 个阶段。

  1. 评估 PHP 代码的服务器端渲染。
  2. 评估 javascript 的客户端代码。

您很可能还需要为 $lat 创建一个 javascript 变量。

【讨论】:

  • 非常感谢您的回复,虽然您的回复不是我想要的,但它让我有机会从另一个角度查看它。所以我只是将数组从 php 传递给 javascript(我不知道这很容易)。我将粘贴我的新代码以防其他人看到。
  • 好吧,不是你将它传递给javascript。使用 php 您编写/生成 javascript 文件,并且您必须编写/生成有效的可解释 javascript 代码。
  • @OscarMontalvo 你应该很容易通过在浏览器中检查生成的 html 来查看结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多