点击函数无法获取全局变量askingPrice值,Alert返回NaN求助
问题分析与解决方案
嘿,我明白你的困惑了!问题出在askingPrice变量的赋值时机上:
你现在是在页面刚加载完成时就给askingPrice赋值了,也就是$(document).ready()执行的那一刻,它会读取当时#mortcalc-ask输入框里的内容。如果那时候输入框是空的,或者内容没法转成有效的数字,自然就会得到NaN。更关键的是,就算之后你修改了输入框里的内容,这个变量也不会自动更新——因为它只在页面加载时被赋值了一次,点击事件触发时用的还是最开始的旧值。
解决方案1:每次点击时获取最新值(最简单直接)
把获取输入值的逻辑移到点击事件内部,这样每次点击按钮都会重新读取输入框的当前内容:
$(document).ready(function() { var i = 0; $(".mortcalc-go").click(function(){ var i = 1; // 每次点击时重新获取并处理输入值 var askingPrice = parseFloat( $("#mortcalc-ask").val().replace(/,/g,'') ); alert(askingPrice + " is the cost"); }); });
解决方案2:保留全局变量并手动更新
如果你确实需要把askingPrice作为全局变量(比如其他地方也要用到),可以写一个复用的更新函数,在页面初始化和点击时都调用它:
$(document).ready(function() { var askingPrice; var i = 0; // 封装更新逻辑,方便复用 function updateAskingPrice() { var inputValue = $("#mortcalc-ask").val().replace(/,/g,''); // 额外处理:避免无效输入导致NaN askingPrice = isNaN(parseFloat(inputValue)) ? 0 : parseFloat(inputValue); } // 页面加载时先初始化一次 updateAskingPrice(); $(".mortcalc-go").click(function(){ var i = 1; // 点击前先更新变量到最新值 updateAskingPrice(); alert(askingPrice + " is the cost"); }); });
小提示
我还加了个小判断来处理无效输入的情况——如果用户输入的内容没法转成数字,就默认把askingPrice设为0,这样alert里就不会出现讨厌的NaN啦。
内容的提问来源于stack exchange,提问作者kenny
相关产品推荐
相关产品推荐

