1

我有一个触发 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

3 回答 3

4

这一行:

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

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

使用不同的变量名:

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

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

减少此类错误概率的一种方法是在命名函数和变量时遵循最佳实践。在这里,您应该将函数命名为动词来表示操作而不是值。

于 2013-05-30T10:42:44.640 回答
1

您在这里将 JavaScript 与 VBScript 混淆了。

返回值使用return关键字:

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

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

document.getElementById('tTotalPurchasePrice').value = TotalPurchasePrice(BuyinPrice, TopupAmount);
于 2013-05-30T10:43:19.393 回答
1

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

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

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

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

于 2013-05-30T10:49:16.790 回答