2012-12-03 79 views
3

大家好,我有總金額的代碼ParseFloat去的NaN

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

+1

什麼被輸入到文本框? –

+3

'amountDue'是一個'span',它沒有價值。 – zerkms

+0

@ DanielA.White如果你輸入了AMOUNT RECEIVED,那麼它會觸發跨度到顯示值 –

回答

5

#amountDue是一個<span>元素,所以它沒有value屬性。

使用.innerHTML來獲取其內容。

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

是技術上等同於

parseFloat(undefined); 

其產生的價值NaN因爲跨度元素沒有一個名爲.value屬性。也許你想要.innerHTML

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

這將不會返回值:

 document.getElementById("amountDue").value 

amountDue不是一個HTML input元素。

如下嘗試:

 document.getElementById("amountDue").innerHTML; 

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

amountDue的value正在恢復undefined,導致parseFloat返回NaN 使用innerHTML代替。更改此行

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

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