Javascript 如何实现循环以使程序不';不要撞车?

Javascript 如何实现循环以使程序不';不要撞车?,javascript,string,webpage,Javascript,String,Webpage,我是一个初学者,我正在解决这个Javascript问题。我需要提示用户输入R/R或F/F。然而,我想实现一个循环,以便在他们输入其他内容时,我的程序不会崩溃。我该怎么做呢 function CalculatePayroll() { employeeNumber=prompt("Please enter the employee number"); employeeName=prompt("Please enter the employee's name"); employeeDepartment

我是一个初学者,我正在解决这个Javascript问题。我需要提示用户输入R/R或F/F。然而,我想实现一个循环,以便在他们输入其他内容时,我的程序不会崩溃。我该怎么做呢

function CalculatePayroll()
{
employeeNumber=prompt("Please enter the employee number");
employeeName=prompt("Please enter the employee's name");
employeeDepartment=prompt("Please enter the employee's department");
employeesHours=prompt("Please enter the number of hours the employee 
worked");
employeeTypeCode=prompt("Please enter the employee's type code: F/f or 
R/r");

  if(employeeTypeCode=="R"||employeeTypeCode=="r")
  {
    RegularWorkerPayroll();
    CalculateTotalPay();
    DisplayPaySlip();

  }

  else if(employeeTypeCode=="F"||employeeTypeCode=="f")
  {
    FacultyPayroll();
    CalculateTotalPay();
    DisplayPaySlip();
  }
}

我希望实现一个循环,这样,如果他们输入像“b”之类的东西,我可以不断地提示他们,直到他们输入正确的字符。我尝试了几次不同的循环,但最终得到了一个无限循环lol。

使用while循环,如下所示:

var employeeTypeCode;
while(employeeTypeCode!=“r”和&employeeTypeCode!=“f”){
employeeTypeCode=提示(“请输入员工的类型代码:F/F或R/R”)。toLowerCase();

}
您可以使用
while
循环测试阵列和
包含
。然后使用
开关
toLowerCase
调用函数:

employeeTypeCode=prompt("Please enter the employee's type code: F/f or R/r");

while (!["F", "f", "R", "r"].includes(employeeTypeCode)) {
    employeeTypeCode=prompt("Please enter the employee's type code: F/f or R/r");
}

switch (employeeTypeCode.toLowerCase()) {
    case "f":
        FacultyPayroll();
        break;
    case "r":
        RegularWorkerPayroll();
        break;
}

CalculateTotalPay();
DisplayPaySlip();

您可以使用
do-while
循环获取用户输入,并在用户输入无效选项时继续请求

您可以在输入中使用
.toLowerCase()
,因此只需检查字母的小写版本。然后,您还可以使用一个对象将您的字母映射到一个特定的函数,该函数调用该
employeeTypeCode
的关联函数

function calculatePayroll() {
  var options = {
    'r': RegularWorkerPayroll,
    'f': FacultyPayroll
  }

  employeeNumber = prompt("Please enter the employee number");
  employeeName = prompt("Please enter the employee's name");
  employeeDepartment = prompt("Please enter the employee's department");
  employeesHours = prompt("Please enter the number of hours the employee worked ");

  do {
    employeeTypeCode = prompt("Please enter the employee's type code: F/f or R / r ").toLowerCase();
  } while(employeeTypeCode !== "r" && employeeTypeCode !== "f");

  options[employeeTypeCode]();
  CalculateTotalPay();
  DisplayPaySlip();
}

另外,如果是构造函数,通常最好只使用大写字母作为函数名,不是像这样的常规函数。

看起来开关在这种情况下会更有用。递归调用将有助于处理允许字符的基本条件。请确保展示您已经尝试过的内容,使示例针对OP的问题,而不是他们必须弄清楚如何修改的示例。@JackBashford。谢谢你告诉我一个问题@AniketG