我对javascript非常陌生,所以我不知道我是否正确这样做。
我有一些填充javascript变量数组的php:
<?php
$pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order'));
$data = array();
foreach($pages as $post){
setup_postdata($post);
$fields = get_fields();
$data[] = '<p>'.$fields->company_name.'</p>';
}
wp_reset_query();
// the js array
echo 'var marker_data = ["'.implode('","', $data).'"];';
?>
然后提供此javascript:
infowindow.setContent(marker_data[i]);
问题在于它没有递增。如果我将“i”更改为“0”或“1”则可以正常工作。但显然我需要它来增加。
答案 0 :(得分:1)
您需要在JavaScript中增加i
,而不是在php中增加<script type="application/javascript">
<?php
$pages =get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order'));
$data = array();
foreach($pages as $post){
setup_postdata($post);
$fields = get_fields();
$data[] = '<p>'.htmlspecialchars($fields->company_name).'</p>';
}
wp_reset_query();
echo 'var marker_data = ' . json_encode($data) . ';'; // Instead of implode
?>
for (var i = 0;i < marker_data.length;i++) {
infowindow.setContent(marker_data[i]);
}
</script>
,如下所示:
{{1}}
答案 1 :(得分:0)
PHP运行并返回页面后,查看源代码并查看JS。它应该看起来像这样
var marker_data = ['<p>Comp 1</p>', '<p>Comp 2</p>', '<p>Comp 3</p>'];
这意味着您已经构建了字符串数组。现在你需要使用一个javascript循环来迭代它,就像这样。
var length = marker_data.length;
for (var i = 0; i < length; i++) {
infowindow.setContent(marker_data[i]);
}
请记住,所有这些迭代都应该在您的JS代码中发生,而不是您的PHP代码。他们不应该像那样混在一起。
答案 2 :(得分:0)
上面给出了很好的回答。这是一个普通的老派教学方式,你如何混合PHP和javascript数组,它也可以根据你的需要进行调整,但我也建议你超越它,并寻找新的学习东西。
<html>
<head>
<script type="text/javascript">
var myRandoms = new Array();
<?php
$dbq="\"";
for($i=0;$i<9;$i++)
echo 'myRandoms[',$i,']=',$dbq,rand(1,999),$dbq,';';
?>
var len=myRandoms.length;
var i;
for(i=0;i<len;i++)
alert(myRandoms[i]);
</script>
</head>
<body>
</body>
</html>