【问题标题】:Alert returning "NaN" on global variable警告在全局变量上返回“NaN”
【发布时间】:2018-03-19 21:47:33
【问题描述】:

我确定我只是遗漏了一些超级简单的东西,但为什么我的 click 函数没有从 askPrice 全局变量中获取实际值?它只返回“NaN”。如果 askPrice 在 click 函数中,它工作得很好。

$(document).ready(function() {
    var askingPrice = parseFloat( $("#mortcalc-ask").val().replace(/,/g,'') ); 
    var i = 0;

  $(".mortcalc-go").click(function(){
    var i = 1;
    alert(askingPrice + " is the cost");
  });

});

提前感谢您的帮助!

【问题讨论】:

  • $("#mortcalc-ask").val().replace(/,/g,'') 的值是多少?
  • 因为$("#mortcalc-ask").val() 可能会在文档加载时返回NaN .. 但是当您在点击中使用它时.. 确保您在点击之前输入了一些内容,所以它会返回值
  • NaN 代表 Not a Number 所以在初始加载时,变量被设置为任何存在并且不会改变,假设它是一个空值,这将是南。然而,当 askPrice 在 click 函数中时,它只在点击时获取值,我猜你只是在 askPrice 里面有一个数字时才点击按钮,所以你不会得到 NaN。
  • $("#mortcalc-ask") 的值与客户端在点击按钮之前需要填写的 相关联。它一开始是空的,但即便如此,在单击按钮时,在输入中输入一个数字后,它应该会吐出数字,对吧?
  • @Alec 所以你告诉我的是,一旦它在文档加载时获得“NaN”的值,在按钮单击时不会被覆盖?以前从未遇到过:/ 编辑:Nvm ... 下面的答案清除了我的逻辑失误。显然,它不会改变,因为它不会重置 click 函数内的变量.. fml ......谢谢大家!

标签: javascript jquery scope


【解决方案1】:

您的“全局”变量(在ready 函数的范围内)是在文档“就绪”时设置的,而不是在单击时设置的。如果用户填写了一些输入字段#mortcalc-ask 然后单击按钮,则填充askingPrice 的代码不会再次运行。您必须将其移动到点击处理程序中。 (我删除了对 i 的引用,因为它们似乎与您的问题无关。)

$(document).ready(function() {
    var askingPrice;

  $(".mortcalc-go").click(function(){
    askingPrice = parseFloat( $("#mortcalc-ask").val().replace(/,/g,'') ); 
    alert(askingPrice + " is the cost");
  });
});

【讨论】:

  • 啊……FML……我知道这一切,但在你写完之前,我脑子里出现了一个奇怪的逻辑失误……谢谢!
猜你喜欢
  • 2017-06-02
  • 1970-01-01
  • 2019-06-15
  • 2013-01-30
  • 2011-10-17
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
相关资源
最近更新 更多