0

生成された HTML テーブルの 1 つの列でデータの合計を取得しようとしています。

テーブルは 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>';
4

2 に答える 2

0

クラスセレクターで試してください

var tds = $('.countit td'); //using jquery
var tds = document.getElementsByClassName(countit).getElementsByTagName('td'); //using javascript

それ以外の

var tds = document.getElementById('countit').getElementsByTagName('td');

また

var sum = 0;
$.each($('.count-me'),function(i,v) {
    var $text=$(v).text();
    sum += isNaN($text) ? 0 : parseInt($text);

}

$('#countit').append('<tr><td>' + sum + '</td><td>total</td></tr>');
于 2013-09-11T10:57:56.247 に答える
0

行もループする必要があります。

<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」です。少し紛らわしいです。1 つの値を変更してください。

于 2013-09-11T11:11:36.433 に答える