gpt4 book ai didi

javascript - "Try...Catch" block 不使用 parseInt()

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:24 26 4
gpt4 key购买 nike

我正在尝试做的事情:

我有一个 javascript 程序,当单击一个按钮时,它会从表单中的 4 个文本框中获取 4 个字符串,并将这些字符串输出到格式化的文本区域中。

function testResults(form){
var errorhandle1 = parseInt(document.myForm.Item_Code.value);
var errorhandle2 = parseInt(document.myForm.Item_Cost.value);
var errorhandle3 = parseInt(document.myForm.Quantity.value);
//above variables are for error handling.
var d = " ";
var subtotal = parseInt(form.Item_Cost.value) * parseInt(form.Quantity.value);
var subtotalValue = parseInt(document.myForm.Subtotal.value);
var testVar = "Item Code: " + form.Item_Code.value + d +
"Item Name: " + form.Item_Name.value + d +
"Item Cost: " + form.Item_Cost.value + d +
"Quantity: " + form.Quantity.value + '\n';


document.myForm.myTextarea.value += testVar;
document.myForm.Subtotal.value = parseInt(subtotal) + subtotalValue;
document.myForm.Sales_Tax.value = document.myForm.Subtotal.value * salestax;
document.myForm.Total.value = parseInt(document.myForm.Subtotal.value) + parseFloat(document.myForm.Sales_Tax.value);
}

上面的代码工作得很好,并且在我的程序范围内完全按照我希望它做的。

try {
if ((isNaN(errorhandle3) == true) || (isNaN(errorhandle2) == true)) {
throw "Error1";
}
} catch (e) {
if (e == "Error1") {
alert("Error! You must enter a number into the qty and cost fields!");
}
}

我试图用 try...catch block 完成的只是为了确保

document.myForm.Item_Code.value
document.myForm.Item_Cost.value
document.myForm.Quantity.value

实际上是数字。

try...catch 语句在我每次运行程序时都会触发,并且不关心我在相应的文本框中输入了什么。我将非常感谢对此的任何和所有见解!

另外:我查看了这两个链接,但无法理解我的问题。 javascript parseInt return NaN for empty string http://www.w3schools.com/jsref/jsref_isnan.asp

最佳答案

这里的根本问题是 isNaN() 测试值是否为 NaN。它不会测试字符串是否是正确的数字。它有一些强制规则来尝试处理字符串,但这实际上不是它的设计目的。

您可以在此处查看测试是否可以将某些内容解析为有效数字的方法:Validate decimal numbers in JavaScript - IsNumeric()

值得阅读那里的好答案中的细节,但它归结为这样的东西,它比你需要的要多一点,但它是通用的:

function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}

而且,没有理由在你的代码中使用异常,所以你可以这样做:

if (!isNumber(errorhandle3) || !(isNumber(errorhandle2)) {
alert("Error! You must enter a number into the qty and cost fields!");
}

此外,在您的代码中,某些 .Value 属性看起来可能应该是 .value(小写)。

关于javascript - "Try...Catch" block 不使用 parseInt(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com