我正在尝试写股票价格到表格单元格。现在它正在循环,只是写下最后的价格。我想把价格写入表中的每个#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; ?>
答案 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迭代元素并相应地设置值。