需要将javascript与try、catch和throw异常一起使用。我想用它来检查一个文本框,以确保它是一个数字而不是一个字母

需要将javascript与try、catch和throw异常一起使用。我想用它来检查一个文本框,以确保它是一个数字而不是一个字母,javascript,html,Javascript,Html,当我添加测试函数时,它不起作用。但是,当我取出测试函数时,它会工作,但仍然会将任何无数字显示为nan HTML代码: <h2>How many male books would you like to order? : <input type="text" id ="maleTotal"/> <input type="button" onClick="maleBook()" Value = "Total" />

当我添加测试函数时,它不起作用。但是,当我取出测试函数时,它会工作,但仍然会将任何无数字显示为
nan

HTML代码:

        <h2>How many male books would you like to order? : <input type="text" id ="maleTotal"/>
        <input type="button" onClick="maleBook()" Value = "Total" />
        <p> The total is: <br>
        <span id = "result"></span></h2>

      </form>

首先,您的测试函数有错误:您忘记了“警报”旁边的参数:

警报(“此处有消息”)

另外,您似乎没有调用test()。您应该使test()返回true/false,这取决于输入是一个数字,并在主函数中调用它


此外,“message.innerHTML”在这里似乎没有意义。也可以使用alert。

首先,您的测试函数有错误:您忘记了alert旁边的参数:

警报(“此处有消息”)

另外,您似乎没有调用test()。您应该使test()返回true/false,这取决于输入是一个数字,并在主函数中调用它


此外,“message.innerHTML”在这里似乎没有意义。也可以使用警报。

首先,警报中缺少括号。它应该像:window.alert(“您的消息”)

另一方面,if语句{}缺少括号

最后,您需要调用test()函数,可能在maleBook()的末尾将其链接起来


首先,警报中缺少括号。它应该像:window.alert(“您的消息”)

另一方面,if语句{}缺少括号

最后,您需要调用test()函数,可能在maleBook()的末尾将其链接起来


就像其他人说的,你错过了警报的括号和catch的括号

在计算总税收之前,我对调用测试函数的javascript代码做了一个更改,结果是这样的

这只是一个细节,但我将总值作为参数传递给测试函数

function maleBook(){
    var malePrice = 14.95;
    var tax = .06875;
    maleTotal = document.getElementById("maleTotal").value;
    if(test(maleTotal)){
        totalTax = tax * malePrice * maleTotal
        document.getElementById("result").innerHTML = maleTotal * malePrice + totalTax;
    }else{
        //put some message here
    }    
}

function test(x) {
 var err= true;
  try { 
    if(x == ""){
        window.alert("empty");
      err=false;
    } 
    if(isNaN(x)){
        window.alert("not a number");
      err=false;
    }
    return err;
    }catch(err) {
            message.innerHTML = "Input is " + err;
        return false;
        }
  }

就像其他人说的,你错过了警报的括号和catch的括号

在计算总税收之前,我对调用测试函数的javascript代码做了一个更改,结果是这样的

这只是一个细节,但我将总值作为参数传递给测试函数

function maleBook(){
    var malePrice = 14.95;
    var tax = .06875;
    maleTotal = document.getElementById("maleTotal").value;
    if(test(maleTotal)){
        totalTax = tax * malePrice * maleTotal
        document.getElementById("result").innerHTML = maleTotal * malePrice + totalTax;
    }else{
        //put some message here
    }    
}

function test(x) {
 var err= true;
  try { 
    if(x == ""){
        window.alert("empty");
      err=false;
    } 
    if(isNaN(x)){
        window.alert("not a number");
      err=false;
    }
    return err;
    }catch(err) {
            message.innerHTML = "Input is " + err;
        return false;
        }
  }

浏览器检查器中出现了哪些错误?请阅读如何提供错误。照目前的情况,您的代码不会运行并且会抛出错误。在IDE中添加一个linter会有所帮助。我建议您投资学习一些基本知识:1。在浏览器中,当运行javascript时,应该使用开发者工具(google“Chrome开发者工具”)。他们会告诉你很多有用的信息——在这种情况下,你的打字错误导致代码无法运行。其次,为了使函数有用,必须调用该函数。您的代码中没有任何地方调用
test
函数。第三,您的
try-catch
有缺陷,实际上什么都做不了。您正在
try
ing有效的代码,该代码将始终运行,因此您的
catch
是无用的。您在浏览器检查器中遇到了哪些错误?请阅读如何提供。照目前的情况,您的代码不会运行并且会抛出错误。在IDE中添加一个linter会有所帮助。我建议您投资学习一些基本知识:1。在浏览器中,当运行javascript时,应该使用开发者工具(google“Chrome开发者工具”)。他们会告诉你很多有用的信息——在这种情况下,你的打字错误导致代码无法运行。其次,为了使函数有用,必须调用该函数。您的代码中没有任何地方调用
test
函数。第三,您的
try-catch
有缺陷,实际上什么都做不了。您正在
try
ing将始终运行的有效代码,因此您的
catch
是无用的。
function maleBook(){
    var malePrice = 14.95;
    var tax = .06875;
    maleTotal = document.getElementById("maleTotal").value;
    if(test(maleTotal)){
        totalTax = tax * malePrice * maleTotal
        document.getElementById("result").innerHTML = maleTotal * malePrice + totalTax;
    }else{
        //put some message here
    }    
}

function test(x) {
 var err= true;
  try { 
    if(x == ""){
        window.alert("empty");
      err=false;
    } 
    if(isNaN(x)){
        window.alert("not a number");
      err=false;
    }
    return err;
    }catch(err) {
            message.innerHTML = "Input is " + err;
        return false;
        }
  }