我有'ul',其中包含一个php循环。现在我需要从javascript动态地将内容添加到循环中。我已成功使用jQuery .each()
将内容添加到每个'li'中。但结果有问题。
这是我的代码:
<ul id="ulID">
<?php
if(isset($nav_data['all_notifications'])) {
for($i = 0; $i < $nav_data['number_of_notes'] && $i < 4; $i++){
?>
<li>
<p id="content">
<?php echo $nav_data['all_notifications'][$i]['other_fullname'];?>
//I need to add the content here
</p>
</li>
<script>
var notiTime = moment("<?php echo $nav_data['all_notifications'][$i]['time_sent']?>").format("YYYY-MM-DD hh:mm:ss");
$('#ulID li p').each(function(i) {
(this).append(notiTime);
});
</script>
</ul>
在输出中,第一个li包含所有4个内容。第二个列表包含3个内容。第三个列表包含2个内容,最后一个列表包含最后一个内容。
我认为脚本如何将内容附加到循环列表中是错误的。但我不确定如何改变它。
提前感谢您的帮助!
答案 0 :(得分:2)
好的,让我们破解你的代码。
您有一个for
循环,可生成4个<li>
代码:
for($i = 0; $i < $nav_data['number_of_notes'] && $i < 4; $i++){
现在您的<script>
循环中有一个for
。在此<script>
中,您有另一个循环.each()
。
因此,当您处于第一个php
循环中时,您只有1 <li>
,并且JavaScript循环找到1 <li>
并将notiTime
变量附加到其中。
在第二个php
循环中,您有2个<li>
,然后您的<script>
再次运行,这次,您的JavaScript会找到它们并附加新的notiTime
变量对于他们(现在是第一个<li>
,我们将有两个notiTime
变量的内容。
这也适用于第三和第四个php
循环......
解决方案:
在您的JavaScript代码中,不是循环浏览<li>
代码,而是每次只找到<ul>
的最后一个孩子,这将是最新创建的<li>
(使用{{ 1}}选择器)并且仅将:last-child
变量附加到它。
所以我不会触及除notiTime
部分之外的代码的任何部分,它将是这样的:
<script>
答案 1 :(得分:0)
试试这个:
<ul id="ulID">
<?php if(isset($nav_data['all_notifications'])) {
for($i = 0; $i < $nav_data['number_of_notes'] && $i < 4; $i++){
?>
<li>
<p id="content">
<?php echo $nav_data['all_notifications'][$i]['other_fullname'];?>
//I need to add the content here
</p>
</li>
<?php } ?>
<script>
var notiTime = moment("<?php echo $nav_data['all_notifications'][$i]['time_sent']?>").format("YYYY-MM-DD hh:mm:ss");
$('#ulID li p').each(function(i) {
(this).append(notiTime);
});
</script>
</ul>
答案 2 :(得分:-1)
PHP脚本在服务器上呈现页面。 JS在客户端上运行。当JS有机会执行时,页面已经被渲染并被服务器