如何使用isNAN和分隔符问题
我需要找到一种输入分隔符的方式,例如,12,000而不会收到NaN消息,如果这样做不能完成,则显示消息。我已经浏览了各种网站和*,并无法解决如何做到这一点(newbeeee问题)。目前的代码如下:如何使用isNAN和分隔符问题
<script language="JavaScript" type="text/javascript">
function calcsavings()
{
var B1=document.forms[0].B1.value;
var B2n = Number("1516");
var B2=+B2n + +B1;
var B4 = Number("0.138");
var t;
for (i=0; i<document.forms[0].ITR.options.length; i++)
{
if (document.forms[0].ITR.options[i].selected)
t = document.forms[0].ITR.options[i].value;
}
var result=(B1/t-(B2/(1+B4)))*t
result=Math.round(result);
document.getElementById("childcaresavings").innerHTML=result;
}
</script>
我已经剥离了我在发布之前尝试的非工作代码。
添加NaN
检查result
有什么不对吗?
result=Math.round(result);
var htmlContent = Number.isNaN(result) ? "not a valid number" : result;
document.getElementById("childcaresavings").innerHTML=htmlContent ;
编辑:如果你正在寻找一个随意使用的解析。您可以使用全球范围内的replace
,它将删除除数字和句点之外的任何内容。
if (document.forms[0].ITR.options[i].selected) {
var inputVal = document.forms[0].ITR.options[i].value;
var removedCommas = inputVal.replace(/[,]/g, "")
if (removedCommas[0] === "£") {
removedCommas = removedCommas.slice(1, removedCommas.length)
}
t = removedCommas
}
这个作用:它需要你的输入,并删除所有逗号和£如果在输入第一个字符。假设你的用户输入一个合理的条目,它会按预期处理这个数字。如果您的使用输入任何奇怪的东西如/ * & #
等,NaN
将被退回,您的错误将显示。
安德鲁,谢谢,这绝对完美的工作并简单地改变了信息,理想情况下我想能够使用£,或者在输入框B1内,但是需要这个isNaN解决方案,因为除了带/不带小数点的直接数字之外,任何其他的都返回NaN,谢谢Andrew,这真的有帮助。我们甚至不知道是否有一个可行的解决方案来解决这个问题,因为它似乎要么太复杂,要么解决方案效果不好。 – maxballroom
@maxballroom为了清楚起见,您希望能够输入120,000英镑一个有逗号的数字仍然可以作为一个数字被正确处理? – Andrew
@maxballroom没有抓住那个部分,根本不难做到,但这取决于你想要的有多严格成为。你会允许格式不正确的逗号和英镑组合,例如“1200,00”,“120,000英镑”吗?或者“120,000英镑”是否会成为唯一一个你会强制成为真实数字的东西? – Andrew
't'不是一个数字。 – taha
嗨Xufox 5,我访问了这个链接,谢谢,它没有为','例如,10,000作为NaN返回仍然:-(感谢您的建议,但! – maxballroom