То, что я пытаюсь сделать:«Try ... Catch» Блок не работает с ParseInt()
У меня есть яваскрипт программа, которая при нажатии кнопки, занимает в 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 блок просто чтобы убедиться, что
document.myForm.Item_Code.value
document.myForm.Item_Cost.value
document.myForm.Quantity.value
фактически номера.
Триггерные инструкции catch запускаются каждый раз, когда я запускаю программу, и мне все равно, что я помещаю в соответствующие текстовые поля. Я был бы очень признателен за понимание и понимание этого!
Также: я посмотрел на обе эти ссылки и не смог понять мою проблему. javascript parseInt return NaN for empty string http://www.w3schools.com/jsref/jsref_isnan.asp
Это не имеет никакого смысла здесь, чтобы использовать 'попробовать/catch' вокруг чего-то это просто, что само по себе не бросать. Вы можете просто использовать строчный оператор 'if', а код будет проще и лучше работать. Я не вижу здесь никаких исключений. – jfriend00
Совет: не проверяйте логические значения в '== true'. Это избыточно; 'if (isNaN (errorhandle3) || isNaN (errorhandle2))' читает лучше. – Ryan
Спасибо вам за быстрый ответ. Я сейчас меняю их. – Fishbones