2013-05-30 2 views
1

J'ai une fonction JavaScript qui se déclenche onchange. Ce qu'il fait est de prendre la valeur d'un champ de saisie, puis l'ajouter à la valeur entrée dans un autre champ, puis afficher la réponse dans un champ différent.La fonction JavaScript ne fonctionnera qu'une seule fois

Il fonctionne très bien la première fois, mais quand je rentre une nouvelle valeur et laisser le champ il y a une erreur: 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; 
} 

Quelqu'un peut-il me dire pourquoi cela ne fonctionne une fois?

Répondre

4

Cette ligne:

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

remplace la fonction TotalPurchasePrice par un numéro. Alors ce n'est pas une fonction, d'où l'erreur que vous avez.

Utilisez un autre nom de la variable:

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

Vous pouvez aussi simplement avoir ajouté le mot-clé var mais il aurait fait le code source de confusion.

Une façon de réduire la probabilité de telles erreurs est de suivre les meilleures pratiques lors de la désignation des fonctions et des variables. Ici vous devriez avoir nommé votre fonction comme un verbe pour indiquer une action au lieu d'une valeur.

+0

Cest grand merci et merci pour l'explication détaillée. – JBoom

1

Vous confondez JavaScript avec VBScript ici.

Pour revenir l'utilisation de la valeur return mot-clé:

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

Puis en dehors de la fonction ont cette ligne:

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

Attribution de la valeur d'une variable dans une fonction sans l'énoncer avec var (TotalPurchasePrice dans votre cas) signifie que la variable est globale.

Étant donné que vous pouvez écrire la déclaration de fonction sous la forme: var TotalPurchasePrice = function(BuyinPrice, TopupAmount) {}, vous venez de l'ignorer.

Vous pouvez renommer la variable dans la fonction ou ajoutez une instruction var devant elle comme:

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

Questions connexes