2013-05-30 4 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

Присвоение значения переменной внутри функции без указания его вар (TotalPurchasePrice в вашем случае) означает, что переменная является глобальной.

Поскольку у вас может быть объявление функции, написанное как: var TotalPurchasePrice = function(BuyinPrice, TopupAmount) {}, вы просто переопределяете его.

Вы можете либо переименовать переменную внутри функции или добавить уаг заявление перед ней нравится:

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

Смежные вопросы