Javascript数字连接而不是添加但是typeof是数字而不是字符串

我是javaScript的新手。 我在这里建一个计算器

我已将输入值存储在变量中,以便最终可以操作结果以根据输入执行计算。 现在我只想将所有值加在一起。

但是,它们不是添加,而是连接在一起。 我使用parseInt来阻止javascript将数字视为字符串,而typeOf显示它们是数字。

这是我的javascript:

$(document).ready(function() { var theTerm = $("#theTerm").val(); var theRate = $("#theRate").val(); var thePrice = $("#thePrice").val(); var theTax = $("#theTax").val(); var theDown = $("#theDown").val(); var theTrade = $("#theTrade").val(); var theResult = parseInt(theTerm + theRate + thePrice + theTax + theDown + theTrade, 10); $("#calculate").click(function(){ alert(theResult); alert(typeof(theResult)); }); }); 

和HTML:

 
Monthly Payment Calculator
Term Rate(%) Price($) Tax(%) Down($) Trade($) Est.Monthly Pmt

更改行并将parseInt应用于每个obj,如下所示

 var theResult = parseInt(theTerm) + parseInt(theRate) + parseInt(thePrice) + parseInt(theTax) + parseInt(theDown) + parseInt(theTrade); 

您可以将数字乘以1 ,而不是使用parseInt 。 它更快更容易地隐藏数据类型。

 $(document).ready(function () { var theTerm = $("#theTerm").val() * 1; var theRate = $("#theRate").val() * 1; var thePrice = $("#thePrice").val() * 1; var theTax = $("#theTax").val() * 1; var theDown = $("#theDown").val() * 1; var theTrade = $("#theTrade").val() * 1; var theResult = theTerm + theRate + thePrice + theTax + theDown + theTrade; $("#calculate").click(function () { alert(theResult); alert(typeof (theResult)); }); }); 

JSFiddle: http : //jsfiddle.net/RqzPk/14/

整理一下代码并避免重复:

DEMO

 $(document).ready(function() { $("#calculate").click(function(){ var inputs = $("input"), theResult = 0; // `inputs` is the list of all input elements for(var i = 0;i < inputs.length; i++) // iterate over all inputs // parse their value, in base 10, and add to the theResult theResult += parseInt(inputs[i].value, 10); alert(theResult); // 42 }); }); 

你必须使用java脚本的parseInt函数。

例如: var theTerm = parseInt($("#theTerm").val());

演示

您将字符串与+连接,然后将该连接结果转换为int。

您想添加之前转换为整数。 就像是:

 var theTerm = parseInt($("#theTerm").val(), 10); ... var theResult = theTerm + theRate + thePrice + theTax + theDown + theTrade;