Разбор html td возвращается NaN

0

У меня этот код, и 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);                 
    }
}
  • 0
    Может быть, ваше значение является пустой строкой в некоторых случаях
  • 0
    Вы можете создать скрипку, Использовать jquery ready , возможно, DOM не взимается при вызове этой функции
Показать ещё 4 комментария
Теги:

3 ответа

1

Измените эту строку:

var cols = $(item).children('td');

в

var cols = $(item).children('td:not(:empty)');

Или вы также можете сделать,

value = value.trim();
if(value == "") value = 0;
  • 1
    В частности, именно этот элемент дает NaN, когда вы пытаетесь его проанализировать: <td rowspan="1"></td>
  • 0
    Если первый символ не может быть преобразован в число, parseFloat возвращает NaN.
Показать ещё 3 комментария
0

Это потому, что: parseFloat ('') => NaN;

Просто измените эту строку кода: var pv = parseFloat (value);

по этому: var pv = (value! = '')? parseFloat (значение): 0;

  • 0
    значение не пустое, я вижу число в окне предупреждения
  • 0
    как вы можете видеть, я предупреждаю каждого я, чтобы увидеть значение и PV ...
0

Он возвращает NaN, потому что когда вы анализируете td, он возвращает пустую строку. В моей скрипке вы можете увидеть простой условный оператор, который проверяет, нет ли значения, чтобы присвоить ему значение 0.

if (!value) value = 0;
  • 0
    значение не пустое, я вижу номер в окне предупреждения. Также это установит значение 0, что я не буду.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню