为什么我的javascript函数只有在手动输入输入时才起作用?

为什么我的javascript函数只有在手动输入输入时才起作用?

问题描述:

我有当值手动设置为什么我的javascript函数只有在手动输入输入时才起作用?

function doSomeMath(array,number){ 
    some math here..... 
} 

它只有当我设置的每月账单的作品完美的作品函数手动

function customer(){ 
this.monthlyBill = 300; 
} 

当我做到这一点,它工作正常:

var someArray = [.2,.3,.6]; 
var customerData = new customer(); 
doSomeMath(someArray,customerData.monthlyBill); 

问题是我不想手动设置它,我想从表单输入元素获取值。

当我做到这一点弄乱:

function customer(){ 
this.monthlyBill = $('#monthly_bill').val(); 
} 

我去在300 #monthly_bill形式和类型,我得到一个完全不同的值。

是什么打字

this.monthlyBill = 300 

this.monthlyBill = $('#monthl_bill').val(); // and then typing 300 into a form. 
+2

300是一个数字 - xxx.val()是一个字符串 - 尝试'parseInt函数($('#monthl_bill ').val(),10);' – mplungjan 2012-04-17 11:26:57

在第二种情况下

this.monthlyBill = $('#monthl_bill').val(); 

它被认为是一个字符串我之间的差异。你需要将它解析为一个整数

所以基本上:

this.monthlyBill = parseInt($('#monthl_bill').val()); 
+0

啊,好的。非常感谢! – 2012-04-17 11:27:51

+1

+1,但不要忘记'parseInt'的基数参数! – 2012-04-17 11:28:56

+0

@JamesAllardice只有在不同于10时才需要 – 2012-04-17 11:30:40

发布我的评论和演示

300多家 - xxx.val()是一个字符串 - 尝试parseInt函数($ ( '#monthl_bill')VAL(),10)。

,是必要的情况下,10人进入基数0领先,因为这表示八进制

DEMO