2013-05-30 122 views
1

我有一個JavaScript函數,觸發onchange。它所做的是從輸入字段獲取值,然後將其添加到在另一字段中輸入的值,然後在不同字段中顯示答案。JavaScript函數將只能工作一次

它正常工作的第一次,但是當我輸入一個新值,離開場還有一個錯誤:TotalPurchasePrice is not a function

function TotalPurchasePrice(BuyinPrice, TopupAmount) { 
var BuyinPrice 
var TopupAmount 
BuyinPrice = BuyinPrice.toString().replace(/\£|\,/g, ''); 
TopupAmount = TopupAmount.toString().replace(/\£|\,/g, ''); 

TotalPurchasePrice = (BuyinPrice * 1) + (TopupAmount * 1); 

document.getElementById('tTotalPurchasePrice').value = TotalPurchasePrice; 
} 

誰能告訴我爲什麼會只能使用一次?

回答

4

這條線:

TotalPurchasePrice = (BuyinPrice * 1) + (TopupAmount * 1); 

通過許多替換TotalPurchasePrice功能。然後它不是一個函數,因此你有錯誤。

使用不同的變量名:

var totalPrice = (BuyinPrice * 1) + (TopupAmount * 1); 
document.getElementById('tTotalPurchasePrice').value = totalPrice; 

你也只是添加了var關鍵字,但它會使得代碼混亂。

降低出現此類錯誤的可能性的一種方法是在命名函數和變量時遵循最佳做法。在這裏你應該把你的函數命名爲一個動詞來表示一個動作而不是一個值。

+0

這就是偉大的感謝,並感謝詳細的解釋。 – JBoom

1

您在這裏混淆了JavaScript與VBScript。

要返回值使用return關鍵字:

return (BuyinPrice * 1) + (TopupAmount * 1); 

然後功能外面有這樣的線:

document.getElementById('tTotalPurchasePrice').value = TotalPurchasePrice(BuyinPrice, TopupAmount); 
1

分配函數內部變量的值,而不使用var陳述它(在你的情況下爲TotalPurchasePrice)意味着變量是全局的。

由於您可以將函數聲明寫爲:var TotalPurchasePrice = function(BuyinPrice, TopupAmount) {},因此您只需重寫它即可。

你既可以重命名函數內部的變量或在它前面加一個var語句,如:

var TotalPurchasePrice = (BuyinPrice * 1) + (TopupAmount * 1);