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

我有 15 倍<span>,我用 jQuerytext()函数定价。在上面的代码中,我想计算它们的总和并将其放入span#pricetotal.

(20+20=40)然而,发生的事情是元素显示而不是添加2020。在上面我使用的代码中parseInt- 这将返回NaN.

我究竟做错了什么?谢谢你。

编辑:元素的 HTML 如下所示:

<span id="itemtotal_0">16</span>
4

3 回答 3

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;
});

演示

笔记:

如果您的跨度包含任何spacenon-numeric数据,这是安全的。在演示中你会发现一个span有字母a

于 2013-03-19T20:00:52.327 回答
0

use condition to check..

try this

$('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;
 }
于 2013-03-19T19:53:39.397 回答
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 spans 是否以 开头itemtotal_0,而不是itemtotal_1

可能是它试图找到span#itemtotal_0,但它不存在。请仔细检查。

于 2013-03-19T19:56:15.663 回答