Javascript 函数未运行/未正确调用

Javascript 函数未运行/未正确调用,javascript,function,switch-statement,Javascript,Function,Switch Statement,变量vTotalPayment不起作用。我假设这是由于我调用函数的方式造成的,尽管我不知道我做错了什么。我知道这也可能是由于对switch语句的误用 函数begin(){ var vTicketType=prompt('请输入票据类型'); var vTicketQty=编号(提示(“请输入所需金额”); document.write('tickettype:'+vTicketType+''); 单据写入('ticketqty:'+vTicketQty+''); var vTicketPric

变量
vTotalPayment
不起作用。我假设这是由于我调用函数的方式造成的,尽管我不知道我做错了什么。我知道这也可能是由于对switch语句的误用

函数begin(){
var vTicketType=prompt('请输入票据类型');
var vTicketQty=编号(提示(“请输入所需金额”);
document.write('tickettype:'+vTicketType+'
'); 单据写入('ticketqty:'+vTicketQty+'
'); var vTicketPrice=calcPrice(vTicketType); var vTotalPayment=calcTotal(vTicketQty,vTicketPrice); 单据书写('总付款:'+总付款); } begin(); 功能计算(价格){ var价格=0; 开关(vTicketType){ 案例“A”: 价格=100; 打破 案例“B”: 价格=75; 打破 案例“C”: 价格=50; 打破 违约: 价格=-1; } 退货(价格); } calcTotal职能(支付){ var付款=(vTicketQty*vTicketPrice); 退货(付款);
}
您只将一个参数传递给函数calcTotal,甚至没有使用它。用下面的代码替换您的calcTotal,如果它仍然不起作用,请在注释中告诉我

function calcTotal(vTicketQty, vTicketPrice) {
    return (vTicketQty * vTicketPrice);
}

你的方法有错误的参数。参数数量和名称错误

我认为应该是
calcPrice(vTicketType)
而不是
calcPrice(Prices)
,应该是
calcTotal(vTicketQty,vTicketPrice)

函数begin(){
var vTicketType=prompt('请输入票据类型');
var vTicketQty=编号(提示(“请输入所需金额”);
document.write('tickettype:'+vTicketType+'
'); 单据写入('ticketqty:'+vTicketQty+'
'); var vTicketPrice=calcPrice(vTicketType); var vTotalPayment=calcTotal(vTicketQty,vTicketPrice); 单据书写('总付款:'+总付款); } begin(); 功能计算器(vTicketType){ var价格=0; 开关(vTicketType){ 案例“A”: 价格=100; 打破 案例“B”: 价格=75; 打破 案例“C”: 价格=50; 打破 违约: 价格=-1; } 退货(价格); } 功能计算器(vTicketQty、vTicketPrice){ var付款=(vTicketQty*vTicketPrice); 退货(付款);
}
您可以执行以下操作:

(函数begin(){
var vTicketType=prompt('请输入票据类型');
var vTicketQty=编号(提示(“请输入所需金额”);
document.write('tickettype:'+vTicketType+'
'); 单据写入('ticketqty:'+vTicketQty+'
'); var vTicketPrice=calcPrice(vTicketType); var vTotalPayment=calcTotal(vTicketQty,vTicketPrice); 单据书写('总付款:'+总付款); })(); 功能计算器(vTicketType){ var价格=0; 开关(vTicketType){ 案例“A”: 价格=100; 打破 案例“B”: 价格=75; 打破 案例“C”: 价格=50; 打破 违约: 价格=-1; } 退货价格; } 功能计算器(vTicketQty、vTicketPrice){ var付款=(vTicketQty*vTicketPrice); 退还款项;
}
调用函数时,使用的是2个参数,但在函数定义中只有1个参数。也许这是错的。您需要同时使用vTicketQty和vTicketPrice作为参数。试试看。这样地。。。。函数calcTotal(vTicketQty,vTicketPrice){var Payment=(vTicketQty*vTicketPrice);return(Payment)}其原因,您没有像在函数calcPrice中那样声明您正在使用的变量:您正在将
vTicketType
传递给switch语句而不是价格,并且在函数
calcTotal
中您正在使用未定义的变量。您可以尝试将此作为switch的替代。注意这是优化。下面的答案指出了问题的实际原因