2013-03-19 98 views
3
$('span#pricetotal').text(function() { 
    var val = 0; 
    for (var i = 0; i < 15; i++) { 
     val += parseInt($('span#itemtotal_' + i).text()); 
    }; 
    return val; 
}); 

我有15x <span>我在那裏用jQuery text()函數的價格。在上面的代碼中,我想將它們的總和計入span#pricetotaljQuery .text()返回NaN,爲什麼?

然而,發生的是,代替(20+20=40),元素顯示2020。在上面的代碼中,我使用parseInt - 這會返回NaN

我在做什麼錯?謝謝。

編輯:元素的HTML看起來像這樣:

<span id="itemtotal_0">16</span> 
+7

顯示你的HTML是這種類型的問題很重要。 – 2013-03-19 19:46:50

+2

最有可能的'parseInt($('span#itemtotal_'+ i).text())'在某個點返回NAN。 – 2013-03-19 19:46:53

+1

parseInt函數無法解析由$返回的值( '跨度#itemtotal_' + I)的.text()爲一個整數。什麼是價值? – 2013-03-19 19:46:53

回答

2
$('#pricetotal').text(function() { 
    var val = 0; 
    for (var i = 0; i < 14; i++) {   
     var value = $.trim($('span#itemtotal_' + i).text()); 
     val +=parseInt($.isNumeric(value) ? value : 0); 
    }; 
    return val; 
}); 

DEMO

注:

這是安全的,如果你的跨度包含任何spacenon-numeric數據。在演示中,您會發現一個span有字母a

+0

這是一個訣竅,但我真的沒有在我以前的代碼中看到任何空格。非常感謝你。 – user1848605 2013-03-19 20:06:54

+0

@ user1848605歡迎 – thecodeparadox 2013-03-19 20:14:31

0

使用條件來檢查..

試試這個

$('span#pricetotal').text(function() { 
    var val = 0; 
    for (var i = 0; i < 15; i++) { 
     if($('span#itemtotal_' + i).text() != ""){ // <-- check if not empty since empty gives Nan when used pareseInt 
     val += parseInt($('span#itemtotal_' + i).text()); 

     } 
    }; 
return val; 
}); 

OR

for (var i = 0; i < 15; i++) { 
    val += parseInt($('span#itemtotal_' + i).text()) || 0; 
} 
0

它的工作原理完美: http://jsfiddle.net/jDnVy/5/

$('span#pricetotal').text(function() { 
    var val = 0; 
    for (var i = 0; i < 15; i++) {   
     val +=parseInt($('span#itemtotal_' + i).text()); 

    }; 
    return val; 
}); 

請檢查您的itemtotal跨度始於itemtotal_0,不itemtotal_1

可能是它試圖找到span#itemtotal_0,但它並不存在。請仔細檢查。