从jQuery中的函数返回一个值

时间:2012-04-27 16:20:09

标签: javascript jquery

我在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]

3 个答案:

答案 0 :(得分: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 * charge为{{1} }}和NaN在计算的其余部分传播。

你可能想要:

NaN

那里有变化:

  1. 我将所有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; } 语句放在顶部,因为that's where they really are

  2. 我声明var,你根本没有宣布,成为The Horror of Implicit Globals的牺牲品。

  3. 我确保始终为new_var分配一个值。我猜你在e时希望enum,但请在适当的时候进行调整。

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

尝试

 return (Number(new_var + fixed));

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