У меня этот код, и parseFloat не будет работать. Он возвращает NaN. Есть идеи! Переменная value возвращает строку (которая является числом), но проблема заключается в разборной переменной: var pv = parseFloat (value) ;. pv, возвращающий NaN.
Таблица html:
var Er1 = '<div><table Id="AEid" width="85%" border="3"><tbody>' +
'<tr><th><b>AM1</b></th><th><b>AM2</b></th><th><b>Total</b></th></tr>' +
'<tr><td >2</td><td rowspan="1">3</td><td rowspan="1"></td></tr>' +
'<tr><td rowspan="1"></td><td rowspan="1"></td><td rowspan="1"></td></tr>' +
'</tbody></table></div>';
//-------------
$newDiv = $(Er1);
var rows = $newDiv.find('tr')
rows.each(function (idx, item) {
if (idx > 0) {
var sum = 0;
var cols = $(item).children('td')
for(var i=0;i<cols.length -1;i++){
var value = $(cols[i]).text();
value = value.trim();
var pv = parseFloat(value);
sum = sum + pv;
alert("i: " + i +"\n Value: " + value +"\n sum: " + sum + "\n parsedValue: " + pv);
}
}
Измените эту строку:
var cols = $(item).children('td');
в
var cols = $(item).children('td:not(:empty)');
Или вы также можете сделать,
value = value.trim();
if(value == "") value = 0;
<td rowspan="1"></td>
Это потому, что: parseFloat ('') => NaN;
Просто измените эту строку кода: var pv = parseFloat (value);
по этому: var pv = (value! = '')? parseFloat (значение): 0;
Он возвращает NaN, потому что когда вы анализируете td
, он возвращает пустую строку. В моей скрипке вы можете увидеть простой условный оператор, который проверяет, нет ли значения, чтобы присвоить ему значение 0.
if (!value) value = 0;