Javascript循环和数组
问题描述:
我遇到了以下循环的问题,它会为变量newLat[i]
生成空结果。但是,当我直接填充newLat[0]
(在最后2行)它工作正常。有什么想法吗?Javascript循环和数组
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]);
答
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
发送给客户端。
答
不能在不同的语言块内使用FOR指针:
for (var i = 0; i < myhits; i++) {
newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>;
document.write (newLat[i]);
}
您正在尝试使用JavaScript我一个PHP块中。不仅这个PHP块执行了这一点,它不知道该怎么处理我。它将为0.
在通过循环运行之前,您需要将$MarkerLat[i]
的内容转储到JavaScript数组中。