【问题标题】:Javascript loops and arrays [duplicate]Javascript循环和数组[重复]
【发布时间】:2016-03-06 13:18:22
【问题描述】:

以下循环出现问题,它为变量newLat[i] 生成空结果。但是,当我直接填充newLat[0](在最后两行中)时,它可以正常工作。有什么想法吗?

PHP:

$sql = "SELECT `id`, `name`, `lat`, `lng` FROM `markers` " ;
$result = $dbc->query($sql);
$hits = $result->num_rows ;
echo "<br /> Records = " ;
echo "$hits <br />";
while($row = $result->fetch_assoc()) {
    $MarkerID[] = $row['id'];
    $MarkerName[] = $row['name'];
    $MarkerLat[] = $row['lat'];
    $MarkerLng[] = $row['lng'];
}       

和 Javascript:

var myhits = <?php echo json_encode($hits); ?>;
var newLat = new Array (myhits);    

for (var i = 0; i < myhits; i++) {
    newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>;
    document.write (newLat[i]);
}

newLat[0] = <?php echo json_encode($MarkerLat[0]); ?>;
document.write (newLat[0]);

【问题讨论】:

    标签: javascript php arrays for-loop


    【解决方案1】:
    for (var i = 0; i < myhits; i++) {
        newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>;
        document.write (newLat[i]);
    }
    

    您正试图在 JavaScript 循环中包含 PHP 代码。这根本不可能,因为所有 PHP 都是在服务器上评估的,而 JS 在客户端上。打开你的网页并“查看源代码”——你会发现那一行可能什么都没有。

    你必须想办法做到这一点;或许可以像发送hits 一样将$MarkerLat 发送给客户端。

    【讨论】:

      【解决方案2】:

      您不能在不同的语言块中使用 FOR 指针:

      for (var i = 0; i < myhits; i++) {
          newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>;
          document.write (newLat[i]);
      }
      

      您正试图在 PHP 块中使用 JavaScript i。此时不仅 PHP 块已执行,它也不知道如何处理 i。它将是 0。

      在通过循环运行之前,您需要将 $MarkerLat[i] 的内容转储到 JavaScript 数组中。

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 2015-02-21
        • 1970-01-01
        • 2015-11-24
        • 2013-01-25
        • 2012-07-09
        • 2018-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多