Javascript 为什么两个数字相乘时会出现NaN错误?

Javascript 为什么两个数字相乘时会出现NaN错误?,javascript,html,Javascript,Html,我的getPercentage函数工作得很好,但是我的getPayment函数却不工作,尽管它的编写方式完全相同。当我点击“获取付款”按钮时,它在我的HTML上返回“NaN” var税={ getPercentage:函数(总计、付款){ 风险值百分比=(付款/总额)*100; 回报率; }, getPayment:函数(总计、费率){ 风险值支付=(总额*费率); 退还款项; } }; 变量处理程序={ getPercentage:函数(){ var totalInput=document.

我的getPercentage函数工作得很好,但是我的getPayment函数却不工作,尽管它的编写方式完全相同。当我点击“获取付款”按钮时,它在我的HTML上返回“NaN”

var税={
getPercentage:函数(总计、付款){
风险值百分比=(付款/总额)*100;
回报率;
},
getPayment:函数(总计、费率){
风险值支付=(总额*费率);
退还款项;
}
};
变量处理程序={
getPercentage:函数(){
var totalInput=document.getElementById('totalInput');
var paymentInput=document.getElementById('paymentInput');
var answer=taxes.getPercentage(totalInput.value,paymentInput.value);
getPercentageAnswer.innerHTML=答案;
},
getPayment:函数(){
var totalInputWO=document.getElementById('totalInputWO');
var rateInput=document.getElementById(“rateInput”);
var应答=taxes.getPayment(totalInputWO.value,rateInput.value);
getPaymentAnswer.innerHTML=answer;
}
};

欠款总额:
您的税率(十进制):
获得报酬


您有一个
div
和一个
input
具有相同id的
rateInput
。因此,
rateInput.value
试图从
div
中获取
值,它返回未定义。将div的
id
更改为其他内容,以在
rateInput

var税={
getPayment:函数(总计、费率){
风险值支付=(总额*费率);
退还款项;
}
};
变量处理程序={
getPayment:函数(){
var totalInputWO=document.getElementById('totalInputWO');
var rateInput=document.getElementById(“rateInput”);
var answer=税收.getPayment(+TotalInputWO.value,+rateInput.value);
getPaymentAnswer.innerHTML=answer;
}
};

欠款总额:
您的税率(十进制):
获得报酬


在进行某些计算之前,您应该在输入中添加一些验证。 验证,如:

  • 检查输入是否为数字,如果不是数字,则在这种情况下向用户显示什么
  • 若输入为空,则用户单击按钮计算结果
  • 您应该首先处理这些情况,然后代码才能更好地工作

    @adiga解决了代码中的错误,但我提供了一种验证输入的方法:

    var税={
    getPayment:函数(总计、费率){
    风险值支付=(总额*费率);
    退还款项;
    }
    };
    变量isNumber=函数(值){
    return/^\d+$/.test(value.trim())
    }
    变量处理程序={
    getPayment:函数(){
    var totalInputWO=document.getElementById('totalInputWO');
    var rateInput=document.getElementById(“rateInput”);
    //验证代码
    var totalInputWO_value=totalInputWO.value.trim()
    if(isNumber(总输入值)和isNumber(rateInput.value)){
    var应答=taxes.getPayment(totalInputWO.value,rateInput.value);
    getPaymentAnswer.innerHTML=answer;
    }否则{
    警报(“输入的数字不是空的,请检查!”);
    }
    //控制台日志(总输入值的类型);
    }
    };
    
    
    欠款总额:
    您的税率(十进制):
    获得报酬
    


    可能您的值无法转换为数字。这些值已转换为字符串。可能是重复的。谢谢大家!@格雷厄姆你可以点击答案旁边的灰色图标