/ / Середнє значення для елемента в класі td jquery - jquery, середнє значення

Середній для кожного елемента в класі jd jquery - jquery, середній

я хочу трохи допомогти, будь ласка,

моя наступна таблиця така:

<table class="tableTest" id="tblOne">
<thead>

<tr><strong><h1>Players</h1></strong></tr>
<tr>
<th>Player name</th>
<th># hits</th>
<th>AVG</th>
</tr>
</thead>
<tbody>

<tr>
<td>Charles Xaviers</td>
<td class="playerClass">10</td>
<td class="test">&nbsp;</td>
</tr>
<tr>
<td>Gon Freecs</td>
<td class="playerClass">17</td>
<td class="test">&nbsp;</td>
</tr>

<tr>
<td>J.K Rolling</td>
<td class="playerClass">21</td>
<td class="test">&nbsp;</td>
</tr>

<tr>
<td><b>Total</b></td>
<td class="totalCountPlayer">&nbsp;</td>
<td>100%</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><b>AVG </b></td>
<td class="avgPlayers">&nbsp;</td>
</tr>

</tbody>

І це мій код jquery для обчислення

    $(document).ready(function() {


var classSum = "playerClass"; var classTotal = "totalCountPlayer"; var ClassAvg   = "avgPlayers";
calculate(classSum, classTotal, ClassAvg);

function calculate(classSum, classTotal, ClassAvg)  {
var sumatoria = $("." + classSum);
var total = 0;
var count = -1;
$.each(sumatoria, function(i, suma){
var pc=$(this).text();
if (pc!= "NA"){
total = total + parseInt(pc,10);
count++;
avg(pc);
}});


$("." + classTotal).text(total);
$("." + ClassAvg).text((total / count).toFixed(3));

function avg(pc){
var avg = 0;

avg = (pc/total);
$( "td.test" ).text(avg);
}
}

});

Я намагаюся обчислити середній розмір за елемент, але завжди беру останній середній розрахунок, як я можу зробити, щоб написати розрахунок у .test клас, будь ласка, допоможіть мені

Має виглядати так:

<table class="tableTest" id="tblOne">

    <tr><strong><h1>Players</h1></strong></tr>
<tr>
<th>Player name</th>
<th># hits</th>
<th>AVG</th>
</tr>

    <tr>
<td>Charles Xaviers</td>
<td class="playerClass">10</td>
<td class="test">0.20%</td>
</tr>
<tr>
<td>Gon Freecs</td>
<td class="playerClass">17</td>
<td class="test">0.35%</td>
</tr>

<tr>
<td>J.K Rolling</td>
<td class="playerClass">21</td>
<td class="test">0.43%</td>
</tr>

<tr>
<td><b>Total</b></td>
<td class="totalCountPlayer">&nbsp;</td>
<td>100%</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><b>AVG </b></td>
<td class="avgPlayers">&nbsp;</td>
</tr>

введіть опис посилання тут

Відповіді:

0 для відповіді № 1

Ваші два основні питання:

  1. Ви хотіли заповнити його td за раз, але $( "td.test" ) націлює кожного td з test клас
  2. total не було обчислено правильно (що ви б бачили, як тільки номер 1 було вирішено)

Спробуйте наступне, що трохи "швидко і брудно":

$(document).ready(function() {

var classSum = "playerClass"; var classTotal = "totalCountPlayer"; var ClassAvg   = "avgPlayers";
var grandTotal = getGrandTotal();

calculate(classSum, classTotal, ClassAvg);

function calculate(classSum, classTotal, ClassAvg) {
var sumatoria = $("." + classSum);
var total = 0;
var count = 0; // formerly: -1
$.each(sumatoria, function(i, suma){
var pc=$(this).text();
if (pc!= "NA"){
count++;
avg(pc, $(this).next());
}
});

$("." + classTotal).text(grandTotal);
$("." + ClassAvg).text((grandTotal / count).toFixed(3));

function avg(pc, $td){
var avg = 0;

avg = (pc/grandTotal);
$td.text(Math.round(avg * 100, 0) + "%");
}
}

function getGrandTotal() {
var sumatoria = $("." + classSum);
var total = 0;
$.each(sumatoria, function(i, suma){
var pc=$(this).text();
if (pc!= "NA"){
total = total + parseInt(pc, 10);
}
});
return total;
}
});


Вихід:

Player name         # hits      AVG
-----------         ------      ---
Charles Xaviers     10          21%
Gon Freecs          17          35%
J.K Rolling         21          44%
Total               48          100%
AVG         16.000


Примітка:

  1. Ваш перший відсоток (наприклад) - це дійсно 20% (21% при округленні), а не .20%. Отже, я внесла таку модифікацію, що означає, що зараз ваш відсоток становить 100%, як і слід було очікувати.

  2. Правильним "AVG" було б 16 (48/3), а не 24. Я також змінив цю модифікацію, але якщо ви чомусь хочете зберегти 24, просто змініть var count = 0; повертатися до var count = -1;.