JavaScript函数只能工作一次

时间:2013-05-30 10:41:33

标签: javascript

我有一个在更改时触发的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;
}

有谁能告诉我为什么这只会工作一次?

3 个答案:

答案 0 :(得分:4)

这一行:

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

用数字替换TotalPurchasePrice函数。然后它不是一个函数,因此你有错误。

使用其他变量名称:

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

您也可以简单地添加var关键字,但这会让代码混乱。

降低此类错误发生概率的方法是在命名函数和变量时遵循最佳实践。在这里,您应该将您的函数命名为动词,以表示动作而不是值。

答案 1 :(得分:1)

你在这里混淆了JavaScript和VBScript。

要返回值,请使用return关键字:

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

然后在函数外有这样的行:

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

答案 2 :(得分:1)

在函数内部分配变量的值而不用var(在您的情况下为TotalPurchasePrice)表示它意味着该变量是全局变量。

因为您可以将函数声明写为:var TotalPurchasePrice = function(BuyinPrice, TopupAmount) {},所以您只是覆盖它。

您可以在函数内重命名变量,也可以在其前面添加一个var语句,如:

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