Jquery一直在回NaN

时间:2012-05-31 22:35:09

标签: jquery

我有一个不断返回NaN的功能。我搜索了论坛并尝试了我发现的所有内容,但很明显我看错了(可能)奇怪的代码:)

我的代码:

  function bakVormTotals(targetClass){
  $.getJSON('http://shop.com/cart/?format=json', function(data){
  var totaal = 0;

 $('.grandTotal').each(function(){ ////////////
 var item = $(this);               // FOUND THIS ON FORUM
 totaal+= parseInt(item.val());    ///////////
 })
 $.each(data.cart.totals, function(index, totals){
 $('<strong/>').html('€' + (+totals.grand_total).toFixed(2)).appendTo(targetClass); //  the grand total price
 });
 });
 }

json看起来像这样:"totals":{"sub_total":"335.29","taxes":[{"percentage":"0.1900","amount":63.71}],"grand_total":"399.00"}} 如果这可能有所帮助。

非常感谢任何帮助

更新1

好的,我发现了一些有趣的新东西。我将上面的功能更改为:

  function bakVormTotals(targetClass){

  $.getJSON('http://shop.com/cart/?format=json', function(data){

  $.each(data.cart, function(index, totals){
  $('<strong/>').html('€' + totals.grand_total + '').appendTo(targetClass); // the grand total price
  });
  });
  }

现在脚本返回:     €未定义未定义€€未定义未定义€€未定义未定义€€未定义未定义€€1197.00

显然我正朝着正确的方向前进,因为€1197.00是正确的价值。 “未定义”的东西可能是由于html部分?有些人可以帮助我将$('')部分更改为“total”,这样我就可以将HTML部分保留下来了吗?

3 个答案:

答案 0 :(得分:0)

$('.grandTotal').each(function(){
  var item = $(this);               // FOUND THIS ON FORUM
  totaal+= parseInt(item.val()); 
  ...

在这部分中,您将遍历一组DOM元素。根据这些元素,它们可能没有函数val(),因此item.val()不是数字,而是undefined

答案 1 :(得分:0)

我认为lucuma是对的,你需要解析浮动做parseFloat($ item.val())

答案 2 :(得分:0)

如果在空字符串或未定义变量上调用parseInt(),则会出现NaN错误。我怀疑这是发生了什么。

进行以下检查以避免这些情况:

if(!isNaN(parseInt(item.val())))
{
    totaal+= parseInt(item.val());
}

另外,为了确保您知道,使用parseInt()会丢弃小数位。使用parseFloat()将保留它们。