我使用以下代码:
<script type="text/javascript">
function minus(){
var t=document.getElementById("totalcost").value;
var u=document.getElementById("advpay").value;
var set=(t-u);
document.getElementById("textfield").value=set;
return true;
}
</script>
我输入“6000”作为 totalcost id字段中的值和 advpay id字段中的“1000” 。所以在 textfield id 字段中,它应显示 5000(6000-1000) ,但它的回答为 NaN 即可。错误在哪里?
答案 0 :(得分:5)
<script type="text/javascript">
function minus() {
var t = parseInt(document.getElementById("totalcost").value, 10),
u = parseInt(document.getElementById("advpay").value, 10),
set = (t - u);
document.getElementById("textfield").value = set;
return true;
}
</script>
这种情况正在发生,因为你试图减去两个字符串! value
返回输入的字符串,您需要将其解析为数字以便减去它们。请记住指定parseInt
的基数,否则可以将数字解析为小数。有关详细信息,请参阅this answer。
答案 1 :(得分:0)
NaN缩写为非数字。 NaN将是包含任何内容而不是数字(字符串,布尔值,对象)的任何计算的结果。在你的情况下,计算是通过使用2个字符串进行的,这就是它返回NaN的原因。在进行计算之前,您必须将值转换为数字。
您可以使用以下代码转换值:
示例1:
var t = +document.getElementById("totalcost").value;
u = +document.getElementById("advpay").value;
示例2(如@LightStyle建议):
var t = parseInt(document.getElementById("totalcost").value, 10),
u = parseInt(document.getElementById("advpay").value, 10),