Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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_Calculator - Fatal编程技术网

Javascript 我刚刚格式化了数字,使其以逗号显示,但现在我的计算器没有';不行?

Javascript 我刚刚格式化了数字,使其以逗号显示,但现在我的计算器没有';不行?,javascript,calculator,Javascript,Calculator,我正在构建一个计算器,我以前曾就此提出过问题,请参见上一链接: 我希望一些字段在输入时用逗号显示,我在这里找到一些代码,它似乎与格式有关,但现在计算只返回NaN 你知道为什么添加逗号会阻止它工作吗 下面是我用来添加逗号的代码,计算器的代码在前面的链接中: HTML: <div class="col-md-10 col-md-offset-1 form-body form-group"> <h2 class="form-heading"&g

我正在构建一个计算器,我以前曾就此提出过问题,请参见上一链接:

我希望一些字段在输入时用逗号显示,我在这里找到一些代码,它似乎与格式有关,但现在计算只返回NaN

你知道为什么添加逗号会阻止它工作吗

下面是我用来添加逗号的代码,计算器的代码在前面的链接中:

HTML:

    <div class="col-md-10 col-md-offset-1 form-body form-group">
                <h2 class="form-heading">Find out how much your mortgage will cost</h2>
                <div class="row text-muted">
                    <div class="col-md-5 col-md-offset-1 calc-input">
                        <h3>Purchase Price</h3>
                        <div class="input-group">
                            <span class="input-group-addon">£</span>
                            <input type="text" class="form-control comma" id="pp" placeholder="150,000" onchange="depositValue()">
                        </div>
                        <h3>Deposit</h3>
                        <div class="row text-muted">
                            <div class="col-md-4">
                                <div class="input-group">
                                    <input type="text" class="form-control" id="percent" placeholder="10" onchange="depositValue()">
                                    <span class="input-group-addon">%</span>
                                </div>
                            </div>
                            <div class="col-md-8">
                                <div class="input-group">
                                    <span class="input-group-addon">£</span>
                                    <input type="text" class="form-control comma" id="dp" placeholder="15,000" onchange="depositPercent()">
                                </div>
                            </div>
                        </div>
                        <h3>Mortgage Term</h3>
                        <div class="input-group">
                            <input type="text" class="form-control" id="mt" placeholder="25">
                            <span class="input-group-addon">Years</span>
                        </div>
                        <h3>Interest Rate</h3>
                        <div class="input-group">
                            <input type="text" class="form-control" id="ir" placeholder="4">
                            <span class="input-group-addon">%</span>
                        </div>
                    </div>
                    <div class="col-md-5 text-center">
                        <h3>Estimated Monthly Payment:</h3>
                        <p id="result"></p>
                        </div>   
                </div>
                <div class="row text-muted">
                    <div class="col-md-10 col-md-offset-1 text-center">
                        <button class="btn btn-cta" onclick="calculate()">Calculate</button>
                    </div>
                </div>
            </div>
逗号JS(在另一个文件中):

$('input.comma').keyup(函数(事件){
//跳过箭头键

如果(event.which>=37&&event.which当您添加逗号时,它不再是一个数字,而是一个字符串。当您进行计算时,您必须在处理之前将其剥离出来,以说明这一点。

因为对带有逗号的字符串进行数学运算时,不能自动强制将其转换为数字类型。您需要请先将这些字符串手动转换为数字谢谢。关于如何在计算之前去掉逗号,有什么建议或示例吗?取决于代码的结构。最简单的方法是将计算函数中的逗号替换为
replace
。我们需要使用
parseInt
ll…例如:
var n3=parseInt(n1.replace(/,/g,”),10)+parseInt(n2.replace(/,/g,”),10);
--其中
n1
n2
是变量,将使用逗号。如果你不介意纯粹主义者对你大喊大叫,你也可以扩展字符串原型并创建一个“normalizeEnumber”函数或其他函数,这样您就可以调用
n1.normalizeEnumber()
并尝试将所有内容打包到该函数中。您有选项。您是否有此应用程序的JSFIDLE?否则,我只能猜测。我不确定您使用的是什么数据,但我能够使其正常工作。我已上载了我使用的文件以及数据的屏幕截图。如果您执行非法mathematical操作您将获得
NaN
。例如,
0/0
可能会导致此问题。您可能需要在其中添加更好的错误处理来解释非法操作。非常感谢您在这方面的帮助,非常感谢!
    function calculate() {
var pp = document.getElementById("pp").value;
var dp = document.getElementById("dp").value;
var mt = document.getElementById("mt").value;
var ir = document.getElementById("ir").value;
var result = document.getElementById("result");

var la = parseInt(pp.replace(/,/g, ""), 10) - parseInt(dp.replace(/,/g, ""), 10);
var intRate = (ir/100)/12;
var months = mt * 12;

var monthlyPayment = ((((la*intRate)/(1-Math.pow(1+intRate,(-1*months)))*100)/100).toFixed(2));

result.innerHTML = "£" + monthlyPayment.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }

    function depositValue() {
    var pp = document.getElementById("pp").value;
    var percent = document.getElementById("percent").value;
    var dp = document.getElementById("dp");

    var dpValue = (parseInt(percent.replace(/,/g, ""), 10) / 100) * parseInt(pp.replace(/,/g, ""), 10);

    dp.value = dpValue;
    }

    function depositPercent() {
    var pp = document.getElementById("pp").value;
    var dp = document.getElementById("dp").value;
    var percent = document.getElementById("percent");

    var dpPercent = (parseInt(dp.replace(/,/g, ""), 10) / parseInt(pp.replace(/,/g, ""), 10) * 100).toFixed(0);

    percent.value = dpPercent;
    }
    $('input.comma').keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40) return;

    // format number
    $(this).val(function(index, value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    ;
    });
    });