php - 生成表中的列总和

标签 php javascript jquery html mysql

我正在尝试获取生成的 HTML 表中一列中的数据总和。

该表正在从 MySQL 获取 yt_id 并使用 JSON 从 YT Api 获取数据(该表是自动生成的)

这是我的代码:

<html>
<?php
include_once('db.php');

$result = mysql_query("select * from yt_data");


echo "<table border='1'>
<tr>
<th>ID</th>
<th>Views</th>
<th>Likes</th>
</tr>";

while($r=mysql_fetch_array($result))
{    
   $yt_id=$r["yt_id"];

   $video_ID = $yt_id;
$JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};
$likes = $JSON_Data->{'entry'}->{'yt$rating'}->{'numLikes'};


  echo "<tr id='countit'>";
  echo "<td>" . $yt_id . "</td>";
  echo "<td class='count-me'>" . $views . "</td>";
  echo "<td>" . $likes . "</td>";
  echo "</tr>";



}

echo "</table>";
?>
</html>

我尝试使用此代码获取总和,但我只得到 NaN:

<script language="javascript" type="text/javascript">
var tds = document.getElementById('countit').getElementsByTagName('td');
var sum = 0;
for(var i = 0; i < tds.length; i ++) {
if(tds[i].className == 'count-me') {
sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);
}
}
document.getElementById('countit').innerHTML += '<tr><td>' + sum + '</td><td>total</td></tr>';
</script>

知道如何让它发挥作用吗?

编辑 1:我已删除表 ID,现在工作正常。但我想对列中的所有数据进行求和,以便 $views 的所有数据。知道如何做到这一点吗? 我正在使用这个,但总是只获得第一个的值

var tds = document.getElementById('countit').getElementsByTagName('td');
var sum = 0;
for(var i = 0; i < tds.length; i ++) {
    if(tds[i].className == 'count-me') {
        sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);
    }
}
document.getElementById('countit').innerHTML += '<tr><td>' + sum + '</td><td>total</td></tr>';

最佳答案

您还必须循环遍历行。

<script language="javascript" type="text/javascript">
rows = document.getElementById('countit').getElementsByTagName('tr');
for(var j = 0; j < rows.length; j ++) {
  var tds = row[j].getElementsByTagName('td');
  var sum = 0;
  for(var i = 0; i < tds.length; i ++) {
    if(tds[i].className == 'count-me') {
      sum += isNaN(tds[i].innerHTML) ? 0 : parseInt(tds[i].innerHTML);
    }
  }
}
document.getElementById('countit').innerHTML += '<tr><td>' + sum + '</td><td>total</td></tr>';
</script>

建议表 ID 和 TR 类名相同“countit”。这有点令人困惑。请更改一个值。

关于php - 生成表中的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739264/

相关文章:

PHP-如何从字符串内容分配类变量和值?

php - 使用 iframe 在不同域的不同网站上显示相同数据的优缺点(以及可能的其他方法)

javascript - 有什么方法可以在 React 中定义类似于 Angular 的自定义属性吗?

jquery - 有没有办法让我的类覆盖 jQuery 主题的类?

php - 如何将两种形式作为参数传递给 laravel Controller ?

php - 文件放置内容换行

OS X 上的 PHP 调试 - 无望?

javascript - 使用JS将浏览器版本作为类添加到<html>或<body>

javascript - 如何在不使用 JavaScript 的情况下阻止 PostBack?

javascript - 通过拖动使 d3 div 可调整大小