ParseFloat去了NaN

时间:2012-12-03 02:30:42

标签: javascript

大家好,我有这段代码

function computeChange(){
var change;
var amountDue = parseFloat(document.getElementById("amountDue").value);
var amountReceive = parseFloat(document.getElementById("amountReceive").value);
change = amountReceive - amountDue;
document.getElementById('amountChange').innerHTML = change;
}



<td>Total Amount</td>
<td>Php:<span id="amountDue"><?php echo $sum; ?></span></td>
</tr>
<tr>
<td>Amount Paid</td>
<td><input type="number" id="amountReceive" required="required" maxlength="4" size="4" onKeyUp="computeChange()"></td>
</tr>
<tr>
<td>Change</td>
<td>Php:<span id="amountChange"></span></td>
</tr>

总金额是小数
付款金额=文字

所以问题是如果我在文本框中输入内容,则更改范围为NaN

4 个答案:

答案 0 :(得分:9)

parseFloat( document.getElementById("amountDue").value );

在技术上等同于

parseFloat( undefined );

产生值NaN,因为span元素没有名为.value的属性。也许你想要.innerHTML

parseFloat( document.getElementById("amountDue").innerHTML );

答案 1 :(得分:5)

#amountDue<span>元素,因此它没有value属性。

使用.innerHTML获取其内容。

var amountDue = parseFloat(document.getElementById("amountDue").innerHTML);

答案 2 :(得分:2)

这不会返回值:

      document.getElementById("amountDue").value

因为amountDue不是HTML输入元素。

尝试以下:

     document.getElementById("amountDue").innerHTML;

    var amountDue = parseFloat(document.getElementById("amountDue").innerHTML);

答案 3 :(得分:1)

amountDue的

value返回undefined,导致parseFloat返回NaN 请改用innerHTML。改变这一行

var amountDue = parseFloat(document.getElementById("amountDue").value);

var amountDue = parseFloat(document.getElementById("amountDue").innerHTML);