JavaScript If/Else

JavaScript If/Else

本文关键字:Else If JavaScript      更新时间:2023-09-26

我想知道如何让我的javascript显示经理工资的不同结果。我有 2 个 If 语句,但它只显示 2 个条件之一。

numberOfHoursWorked = parseFloat(numberOfHoursWorked);
basePayRate = parseFloat(basePayRate);
if (jobCategorySelectedIndex == 1) {
    txtnumberOfHoursWorked = 50;
    hourlyPayRate = 20;
    jobCategorySelectedIndex = 1;
    hoursEligibleForBasePay = 40;
}
else (jobCategorySelectedIndex == 1); {
     txtnumberOfHoursWorked = 10;
     hourlyPayRate = 20;
     jobCategorySelectedIndex = 1;
     hoursEligibleForBasePay = 10;
}

这是一般结构:

if (condition) {
  // do this if condition is true
} else {
  // do this if condition is false
}

没有直接针对else的条件,因为只有当if条件为 false 时,它才会被执行。 或者,您可以这样做:

if (condition) {
  // do this if condition is true
} else if (condition) {
  // do this if first condition is false and this condition is true
} else {
  // do this if first and 2nd condition are both false
}

但即使你这样做了(稍微改变了你的榜样)

    numberOfHoursWorked = parseFloat(numberOfHoursWorked);
    basePayRate = parseFloat(basePayRate);
    if (jobCategorySelectedIndex == 1) {
        txtnumberOfHoursWorked = 50;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1;
        hoursEligibleForBasePay = 40;
    }
    else if (jobCategorySelectedIndex == 1) {
        txtnumberOfHoursWorked = 10;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1;
        hoursEligibleForBasePay = 10;
    }

这没有意义,因为这两个条件是一回事。要么第一个会触发,第二个不会,要么两者都不会触发。

然后你评论说:

当我将第二个条件从 else 更改为 if 时,它仍然只有 显示 txtnumberOfHoursWorked=10 的第二个 if 语句

好的,现在你有这个:

    numberOfHoursWorked = parseFloat(numberOfHoursWorked);
    basePayRate = parseFloat(basePayRate);
    if (jobCategorySelectedIndex == 1) {
        txtnumberOfHoursWorked = 50;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1;
        hoursEligibleForBasePay = 40;
    }
    if (jobCategorySelectedIndex == 1) {
        txtnumberOfHoursWorked = 10;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1;
        hoursEligibleForBasePay = 10;
    }

这两个条件完全相同,因此它们都会被执行。并且您分配了相同的变量,但具有差异值。因此,第二个代码块中的代码块将覆盖第一个代码块。看看你的两个条件:它们是相同的。

我想也许这就是你所追求的,尽管我不确定你为什么要在代码块中为jobCategorySelectedIndex分配一个值。尤其是第一个代码块,因为它的值已经为 1,以便条件为 true

    numberOfHoursWorked = parseFloat(numberOfHoursWorked);
    basePayRate = parseFloat(basePayRate);
    if (jobCategorySelectedIndex == 1) {
        txtnumberOfHoursWorked = 50;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1; // <-- this is unecessary
        hoursEligibleForBasePay = 40;
    } else { // <-- this gets executed if jobCategorySelectedIndex does not equal 1
        txtnumberOfHoursWorked = 10;
        hourlyPayRate = 20;
        jobCategorySelectedIndex = 1; // <-- are you sure you want to do this??
        hoursEligibleForBasePay = 10;
    }