2014-09-16 4 views
3

J'ai un code JavaScript:TypeError en fonction JavaScript

var update_money = function(money_am){ 
    var d = {'ammount': money_am}; 
    $.post("/adr/", d, load_money) 
} 

z = parseFloat($('#money').val()); 
$('#money').change(z, update_money); 

Quand il exécute, il me donne une erreur d'exécution:

TypeError: 'stopPropagation' called on an object that does not implement interface Event.

En debug, je trouve que money_am n'est pas un flotteur. C'est un objet. Mais si je change mon code comme ceci:

var update_money = function(money_am){ 
    var d = {'ammount': parseFloat($('#money').val())}; 
    $.post("/adr/", d, load_money) 
} 

Cela fonctionne très bien. Que dois-je faire pour résoudre ce problème?

+0

Quelle est la valeur de load_money? – Paradoxis

+0

Avez-vous déclaré z comme variable plus tôt dans le code, en oubliant de déclarer que var peut donner un comportement wierd? –

+0

@Paradoxis load_money est une autre fonction. Je pense que cela n'a pas d'importance, parce qu'en fait j'ai une erreur avant de poster. Quand update_money est exécuté, money_am a un mauvais type, et c'est vraiment un problème. – StopKran

Répondre

2

données, qui a été transmis au gestionnaire d'événements, peut être consulté par event.data:

Fiddle.

var update_money = function(event) 
{ 
    var money_am = event.data; 
    alert(money_am); 
    var d = {'ammount': money_am}; 
    $.post("/adr/", d, load_money); 
} 

function load_money() { } 

z = parseFloat($('#money').val()); 
$('#money').change(z, update_money); 
0

Assurez-vous que l'argent valeur est analysable par parseFloat:

Vous pouvez également modifier votre code à ceci:

$('#money').change(function() { 
    var z = parseFloat($('#money').val()); 
    load_money(z); 
}); 

Cela vous permettra d'obtenir la nouvelle valeur de l'argent à chaque fois # l'argent-champ est changé. Au lieu d'utiliser toujours la même valeur. Avec définir correctement z.

Questions connexes