我在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]
答案 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
那里有变化:
我将所有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。
我声明var
,你根本没有宣布,成为The Horror of Implicit Globals的牺牲品。
我确保始终为new_var
分配一个值。我猜你在e
时希望e
为num
,但请在适当的时候进行调整。
我一致地缩进了代码。执行一致的代码缩进等操作可以帮助您避免错误,并帮助其他人理解您的代码。 强烈推荐它。
答案 1 :(得分:0)
我认为这是因为从文本框中读取的数字是一个字符串。试试var vax = Number(('#textbox1').val());
答案 2 :(得分:-1)
尝试
return (Number(new_var + fixed));
它将您的变量转换为数字。还要确保传递给calculateMB的参数实际上是数字。