如何在javascript中将内容添加到php循环中?

时间:2016-12-31 03:47:02

标签: javascript php jquery html html-lists

我有'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个内容,最后一个列表包含最后一个内容。

我认为脚本如何将内容附加到循环列表中是错误的。但我不确定如何改变它。

提前感谢您的帮助!

3 个答案:

答案 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有机会执行时,页面已经被渲染并被服务器