如何循环并写入表格单元格

时间:2013-04-14 11:15:11

标签: php javascript jquery html

我正在尝试写股票价格到表格单元格。现在它正在循环,只是写下最后的价格。我想把价格写入表中的每个#price单元格。这就是我所拥有的:

$(document).ready(function(){

  var updater = setTimeout(function(){
      $.ajax({  
        url: '../html/update.php',  
        success: function(data) { 
          var resp = jQuery.parseJSON(data); 
          var len = resp.price.length;

          for(var i=0; i<len; i++){

                  $('#price').html(resp.price[i].price);

          }
        }
      });
  },60);

});

<?php foreach ($shares as $row): ?>

        <tr >
        <td><?php echo $row["symbol"];?></td>
        <td><a href="extended_info.php?id=<?=$row["symbol"]?>"><?php echo $row["name"];?></a></td>
        <td style="text-align: right;"><?php echo $row["shares"];?></td>
        <td id="price" style="text-align: right;">$ </td>
        <td style="text-align: right;"><?php 
        $change = number_format($row["change"],2);
        echo sprintf( "%+1.2f", $change );
        echo "   ( ";
        echo $row["pct"]; 
        echo "   )";
        ?></td>
        <td style="text-align: right;">$ <?php echo number_format($row["dayGain"],2);?>  </td>    
        <td style="text-align: right;">$ <?php echo number_format($row["total"],2);?></td>
        </tr>

<?php endforeach; ?>

2 个答案:

答案 0 :(得分:2)

您需要为update.php的回复的每一行确定要更新的正确表格行。

在JavaScript中尝试此操作:

$('[data-symbol="'+resp.price[i].symbol+'"]').html(resp.price[i].price);

这在PHP中:

<td data-symbol="<?=$row['symbol']?>" style="text-align: right;">$ </td>

假设每个共享的symbol都是唯一的,您将能够识别要使用共享价格更新的正确表格单元格。此外,使用data-*属性可使您的标记符合标准。

答案 1 :(得分:1)

因为你设置了这样的id =“price”:

<td id="price" style="text-align: right;">$ </td>

for循环的每次迭代(在jQuery-part中)始终设置相同元素的值(这是dom中的最后一个元素)。这是因为id =“price”不是唯一的,jQuery选择带有此id的dom中的最后一个元素被认为是唯一的。

我认为有两种解决方案:

首先:“将id =”price“转换为数组*,以便您可以遍历数组中的每个项目。您可以通过在ID价格中添加括号来执行此操作,如下所示:id = “价格[]”。但是还有另外一个问题.html中的Id被认为是unqiue,这不是这里的情况。你可以给元素命名,就像这个名字=“price []”。 / p>

简短版本,将行更改为:

<td name="price[]" style="text-align: right;">$ </td>

在jQuery中,您将遍历数组并相应地设置值。

第二: ID是唯一的,并且不必是类,因此将id更改为类,如下所示:id =“price”to class =“price”。只要你的html中没有任何具有名称价格的其他元素,你就可以这样做。

短版本,更改行:

<td class="price" style="text-align: right;">$ </td>

在jQuery中,您将使用classname price迭代元素并相应地设置值。