Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript计算百分比_Javascript_Nan - Fatal编程技术网

使用JavaScript计算百分比

使用JavaScript计算百分比,javascript,nan,Javascript,Nan,我有一个表单,我希望用户输入几个字段,表单将计算目标的总数和百分比。我是JavaScript新手,不知道如何计算百分比。当我尝试parseInt(总计)/parseInt(目标)*100时,我得到一个NaN错误: <html> <head> <style media="screen"> .testform INPUT { display: block; margin-bottom:

我有一个表单,我希望用户输入几个字段,表单将计算目标的总数和百分比。我是JavaScript新手,不知道如何计算百分比。当我尝试
parseInt(总计)/parseInt(目标)*100时,我得到一个NaN错误:

<html>
   <head>
     <style media="screen">
        .testform INPUT {
            display: block;
            margin-bottom: 10px;
            border: 1px solid #212121;
            height: 35px;
            font-size: 16px;
        }
     </style>
     <script type="text/javascript">
        calculate = function() {
            var cash = document.getElementById('a1').value;
            var checks = document.getElementById('a2').value;
            var coin = document.getElementById('a3').value;
            var goal = document.getElementById('goalamount').value;
            var total = document.getElementById('a4').value;

            document.getElementById('a4').value = parseInt(cash)+parseInt(checks)+parseInt(coin);
            document.getElementById('a5').value = parseInt(total)+parseInt(goal);
        }
    </script>
  </head>
  <body>
    <form class="testform">
      Goal amount <input id="goalamount" type="text" value="3000"/>
      Cash Collected <input id="a1" type="text" />
      Checks Collected <input id="a2" type="text" />
      Coins Collected <input id="a3" type="text"  />
      Total Collected <input id="a4" type="text" name="total_amt" onblur="calculate()" />
      Percent of Goal<input id="a5" type="text" name="goal_amt" />
    </form>
  </body>
</html>

.testform输入{
显示:块;
边缘底部:10px;
边框:1px实心#212121;
高度:35px;
字体大小:16px;
}
计算=函数(){
var cash=document.getElementById('a1')。值;
var checks=document.getElementById('a2')。值;
var coin=document.getElementById('a3')。值;
var goal=document.getElementById('goalamount').value;
var total=document.getElementById('a4')。值;
document.getElementById('a4')。value=parseInt(现金)+parseInt(支票)+parseInt(硬币);
document.getElementById('a5')。value=parseInt(总计)+parseInt(目标);
}
目标金额
收取的现金
收集的支票
收集的硬币
收集的总数
目标百分比

NaN表示“不是数字”。检查total是否可以被解析为整数,检查goal是否可以被解析为整数,并且值不是零,那么您应该是好的。

我在本地环境上运行了您的代码,然后知道了抛出异常的原因。变量total是根据上面的代码从html输入元素值中检索的,但是total变量在执行行
parseInt(cash)+parseInt(checks)+parseInt(coin)之前将为空字符串。然后,在将空字符串解析为int之后,parseInt将返回NaN。所以您将在百分比输入框中看到NaN

有一个解决方案可以解决此问题:代码如下:

var goal = document.getElementById('goalamount').value;

document.getElementById('a4').value = parseInt(cash)+parseInt(checks)+parseInt(coin);

var total = document.getElementById('a4').value;

Java!=JavaScriptfor您的
总金额
目标金额
输入字段将
type=“text”
更改为
type=“number”
。这将确保在这些字段中只输入数字。您试图在什么时候计算百分比?您将
parseInt(总计)/parseInt(目标)*100
放在代码中的什么位置。我的猜测是,您得到NaN是因为您在某个点尝试parseInt(“”),这表明您提到的某个输入没有任何值,或者可能是一个不是数字的值。