Javascript 为什么我的输出中没有定义类型?
在运行代码后,我在TYPE列下没有定义。我看了看我的功能,它们对我来说似乎很好。“类型”列应为“儿童”、“少年”或“成人”。您可以在提示中输入10,说明售出了多少张票,费用是多少Javascript 为什么我的输出中没有定义类型?,javascript,function,while-loop,undefined,Javascript,Function,While Loop,Undefined,在运行代码后,我在TYPE列下没有定义。我看了看我的功能,它们对我来说似乎很好。“类型”列应为“儿童”、“少年”或“成人”。您可以在提示中输入10,说明售出了多少张票,费用是多少 <script type="text/javascript"> var BR = "<br />"; var JUNIOR_PRICE = 7.50; var ADULT_PRICE = 11.50; function main()
<script type="text/javascript">
var BR = "<br />";
var JUNIOR_PRICE = 7.50;
var ADULT_PRICE = 11.50;
function main()
{
var ticketType;
var quantity = 0;
var charge = 0.00;
var ticketName;
var currentDate = "";
var cAccum = 0;
var jAccum = 0;
var aAccum = 0;
var numTickets = 0;
var countNumber = 0;
var delta = 0.00;
var totRevenueC = 0.00;
var totRevenueJ = 0.00;
var totRevenueA = 0.00;
var totRevenue = 0.00;
var ticketsSold = 0.00;
document.write("SUMMERVILLE SEAWORLD" + BR);
currentDate = prompt("What is today's date? (ex: October 11, 2014)", "");
document.write("Summary report for " + currentDate + BR);
ticketType = getTicketType();
while (ticketType != 'Q')
{
quantity = getQuantity();
charge = getCharge();
if (ticketType == "C")
{
cAccum += quantity;
delta = 0;
totRevenueC = 0;
}
else if (ticketType == "J")
{
jAccum += quantity;
delta = charge - (quantity * JUNIOR_PRICE);
totRevenueJ = (jAccum * JUNIOR_PRICE) - delta;
}
else
{
aAccum += quantity;
delta = charge - (quantity * ADULT_PRICE);
totRevenueA = (aAccum * ADULT_PRICE) - delta;
}
countNumber ++;
ticketsSold += quantity;
totRevenue = totRevenueC + totRevenueJ + totRevenueA;
ticketType = getTicketType();
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
}
displayFinalReport(currentDate, countNumber, aAccum, totRevenueA, jAccum, totRevenueJ, cAccum, totRevenueC, totRevenue);
}
function getTicketType()
{
var tickType;
tickType = prompt("Enter ticket type: C, J, A or Q to quit", "");
tickType = tickType.toUpperCase();
while (tickType != "C" && tickType != "J" && tickType != "A" && tickType != "Q")
{
tickType = prompt("Invalid entry. Enter ticket: C, J, A or Q to quit", "");
tickType = tickType.toUpperCase();
}
return tickType;
}
function getQuantity()
{
var qty;
qty = prompt("How many tickets sold?", "");
qty = parseFloat(qty);
//Validation loop for a negative amount
while (qty < 0.0)
{
qty = prompt ("Negative sale values are not allowed! Please enter the sale for that region:", "");
qty = parseInt(qty);
}
return qty;
}
function getCharge()
{
var chrg;
chrg = prompt("What is the charge?", "");
chrg = parseFloat(chrg);
//Validation loop for a negative amount
while (chrg < 0.0)
{
chrg = prompt ("Negative sale values are not allowed! Please enter the sale for that region:", "");
chrg = parseFloat(chrg);
}
return chrg;
}
function findTicketName(tickType)
{
var tickName;
if (tickType == "C")
{
tickName = "Child";
}
else if (tickType == "J")
{
tickName = "Junior";
}
else
{
tickName = "Adult";
}
return tickName;
}
function displayOneOrder(count, tickName, qty, chrg, delt)
{
document.writeln("<pre>");
document.writeln("COUNTER #" + " " + "TYPE" + " " + "QTY" + " " + "ACTUAL CHG" + " " + "DELTA");
document.writeln(count + " " + tickName + " " + qty + " " + chrg.toFixed(2) + " " + delt.toFixed(2) + BR);
document.writeln("</pre>");
}
function displayFinalReport(currDate, count, aduAccum, totRevA, junAccum, totRevJ, chiAccum, totRevC, totRev)
{
document.write("SUMMERVILLE SEAWORLD" + BR + BR);
document.write("Summary report for " + currDate + BR + BR);
document.write("Number of records: " + count + BR + BR);
document.write("SALES TOTALS");
document.writeln("<pre>");
document.writeln("TICKET TYPE" + " " + "TOTAL TICKETS" + " " + "TOTAL REVENUE");
document.writeln("ADULT" + " " + aduAccum + " " + totRevA.toFixed(2) + BR);
document.writeln("JUNIOR" + " " + junAccum + " " + totRevJ.toFixed(2) + BR);
document.writeln("CHILD" + " " + chiAccum + " " + totRevC.toFixed(2) + BR + BR);
document.writeln("TOTAL REVENUE: " + totRev.toFixed(2));
document.writeln("</pre>");
}
</script>
var BR=“
”;
var价格=7.50;
var价格=11.50;
函数main()
{
var-ticketType;
var数量=0;
var费用=0.00;
var ticketName;
var currentDate=“”;
var cAccum=0;
var-jAccum=0;
var aAccum=0;
var numTickets=0;
var countNumber=0;
varδ=0.00;
var totRevenueC=0.00;
var totRevenueJ=0.00;
var totRevenueA=0.00;
var totRevenue=0.00;
var TicketsSeld=0.00;
文件。书写(“萨默维尔海洋世界”+BR);
currentDate=提示(“今天的日期是什么?(例如:2014年10月11日)”,“”);
文件。编写(“总结报告”+currentDate+BR);
ticketType=getTicketType();
while(ticketType!=“Q”)
{
数量=getQuantity();
charge=getCharge();
如果(票证类型==“C”)
{
cAccum+=数量;
δ=0;
totRevenueC=0;
}
否则,如果(票证类型==“J”)
{
jAccum+=数量;
增量=费用-(数量*价格);
totRevenueJ=(jAccum*JUNIOR_PRICE)-三角洲;
}
其他的
{
aAccum+=数量;
增量=费用-(数量*成人价格);
totRevenueA=(aAccum*成人价格)-三角洲;
}
countNumber++;
票务售出+=数量;
总收入=总收入+总收入+总收入;
ticketType=getTicketType();
displayOneOrder(计数编号、票号、数量、费用、增量);
}
显示最终报告(当前日期、计数编号、aAccum、totRevenueA、jAccum、totRevenueJ、cAccum、totRevenueC、totRevenue);
}
函数getTicketType()
{
变量类型;
tickType=提示(“输入票据类型:C、J、A或Q以退出”,”;
tickType=tickType.toUpperCase();
while(tickType!=“C”&&tickType!=“J”&&tickType!=“A”&&tickType!=“Q”)
{
tickType=prompt(“输入无效。输入票证:C、J、A或Q以退出”,”);
tickType=tickType.toUpperCase();
}
返回类型;
}
函数getQuantity()
{
变量数量;
数量=提示(“售出多少张票?”,“”);
数量=浮动(数量);
//负数的验证循环
而(数量<0.0)
{
数量=提示(“不允许销售值为负值!请输入该地区的销售:,”);
数量=parseInt(数量);
}
退货数量;
}
函数getCharge()
{
var-chrg;
chrg=提示(“费用是多少?”,“”);
chrg=parseFloat(chrg);
//负数的验证循环
而(chrg<0.0)
{
chrg=prompt(“不允许销售值为负值!请输入该地区的销售:,”);
chrg=parseFloat(chrg);
}
返回chrg;
}
函数findTicketName(tickType)
{
变量名称;
如果(类型=“C”)
{
tickName=“Child”;
}
else if(tickType==“J”)
{
tickName=“Junior”;
}
其他的
{
tickName=“成人”;
}
返回名称;
}
函数displayOneOrder(计数、名称、数量、颜色、增量)
{
文件。书面形式(“”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
document.writeln(“计数器”+“类型”+“数量”+“实际值”+“增量”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
文件写入(计数+“”+tickName+“”+qty+“”+chr.toFixed(2)+“”+delt.toFixed(2)+BR);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
文件。书面形式(“”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
}
函数显示最终报告(currDate、count、aduAccum、totRevA、junAccum、totRevJ、Chiacum、totRevC、totRev)
{
文件。书写(“萨默维尔海洋世界”+BR+BR);
文件编写(“总结报告”+currendate+BR+BR);
文件。写入(“记录数:+count+BR+BR”);
文件。填写(“销售总额”);
文件。书面形式(“”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
document.writeln(“票证类型”+“总票证”+“总收入”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
书面文件(“成人”+“+ADUCUM+”+totRevA.toFixed(2)+BR);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
书面文件(“初级”+“+junAccum+”+totRevJ.toFixed(2)+BR);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
document.writeln(“CHILD”+“”+chiacum+“”+totRevC.toFixed(2)+BR+BR);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
书面文件(“总收入:+总修订金额(2));
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
文件。书面形式(“”);
displayOneOrder(countNumber, ticketName, quantity, charge, delta);
displayOneOrder(countNumber, ticketType, quantity, charge, delta);
}
我相信您要做的是更改这一行:
displayOneOrder(countNumber, findTicketName(ticketType), quantity, charge, delta);
……为此:
ticketName = findTicketName(ticketType);
换句话说,当您打算传递ticketType
时,您传递了第二个参数的ticketName
更新:或者,如果您希望它显示票证类型的全名(例如,“成人”而不是“A”),则将该行更改为:<