0

我在 jquery 中有一个函数。我的函数返回一个值,但是当我检查返回的值时,我得到一个“NAN”可能是什么问题:

[CODE]

 var vax = ('#textbox1').val();

 var newVal = calculateMB(vax,11,3.1);
 alert(newVal);

 function calculateMB(num,charge,fixed)
 {
   if(num>50)
   var e = num - 50;
    var new_e = e * charge;
    new_var = new_e / 20;

     return (new_var + fixed);


   }
 [/CODE]
4

3 回答 3

3

您并不总是为 赋值e,而是在计算中使用它。这是正确缩进的代码:

function calculateMB(num,charge,fixed)
{
    if(num>50)
        var e = num - 50;

    var new_e = e * charge;
    new_var = new_e / 20;
    return (new_var + fixed);
}

num<=50 时,e永远不会获得值(因此保持默认值undefined),因此e * chargeNaNNaN在其余计算中传播。

你可能想要:

function calculateMB(num,charge,fixed)
{
    var e, new_e, new_var;

    e = (num > 50) ? num - 50 : num;
    new_e = e * charge;
    new_var = new_e / 20;
    return new_var + fixed;
}

那里的变化:

  1. 我把所有var的陈述都放在最上面,因为那是它们真正所在的地方

  2. 我宣布,你根本没有宣布,成为隐式全球恐怖的new_var牺牲品。

  3. 我确保e总是被分配一个值。我猜你想e成为numwhen num <= 50,但要酌情调整。

  4. 我一致地缩进了代码。执行一致的代码缩进之类的操作可以帮助您避免错误,并帮助其他人理解您的代码。强烈推荐它。

于 2012-04-27T16:24:55.673 回答
0

我认为这是因为从文本框中读取的数字是一个字符串。尝试var vax = Number(('#textbox1').val());

于 2012-04-27T16:25:46.120 回答
-1

尝试

 return (Number(new_var + fixed));

它将您的变量转换为数字。还要确保传递给 calculateMB 的参数实际上是数字。

于 2012-04-27T16:24:14.823 回答