【问题标题】:TypeError in JavaScript functionJavaScript 函数中的 TypeError
【发布时间】:2014-09-16 12:11:34
【问题描述】:

我有一些 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);

当它执行时,它给了我一个运行时错误:

TypeError:在未实现接口事件的对象上调用了“stopPropagation”。

在调试中,我发现money_am 不是浮点数。它是一个对象。但是,如果我像这样更改我的代码:

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

效果很好。我应该怎么做才能解决这个问题?

【问题讨论】:

  • load_money 的值是多少?
  • 您是否在代码的前面将 z 声明为变量,忘记声明 var 会产生奇怪的行为?
  • @Paradoxis load_money 是另一个函数。我认为没关系,因为实际上我在发布之前有错误。当 update_money 执行时,money_am 的类型错误,这实际上是问题。
  • @Adrian-Forsius 我之前没有将 z 声明为变量。实际上我现在尝试了,但它也没有工作,并且给了我同样的错误。

标签: javascript jquery typeerror


【解决方案1】:

传递给事件处理程序的数据可以被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);

【讨论】:

    【解决方案2】:

    确保货币值可以被 parseFloat 解析:

    您可能还想将代码更改为:

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

    这将允许您在每次更改#money-field 时获得新的货币价值。而不是总是使用相同的值。以及正确定义 z。

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 2013-03-15
      • 2019-08-24
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多