我有一个在更改时触发的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;
}
有谁能告诉我为什么这只会工作一次?
答案 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);