2014-03-31 73 views
-3

我想知道如何讓我的JavaScript顯示經理薪水的不同結果。我有2個If語句,但它只顯示2個條件之一。JavaScript If/Else

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; 
} 
+3

'else'沒有直接關聯的一個條件,因爲它如果有什麼被執行'if'條件爲假 –

+0

非常感謝! :) – user3479736

+0

當我從else更改第二個條件爲if時,它仍然只顯示第二個if語句的txtnumberOfHoursWorked = 10 :( – user3479736

回答

2

這是一般結構:

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

直接沒有條件else因爲如果if條件爲假,只有得到執行。或者,你可以這樣做:

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; 
    } 

這是沒有意義的,因爲這兩個條件都是一樣的東西。第一個會觸發,第二個不會觸發,否則兩者都不會觸發。

那麼你這個評論:

當我改變了第二個條件從別的如果,它仍然只是 顯示第二如果txtnumberOfHoursWorked = 10

好了的聲明,所以現在你有這個:

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; 
    } 

這兩個條件ns完全一樣,所以它們都被執行。你有相同的變量被分配,但有差異值。所以第二個代碼塊中的代碼將覆蓋第一個代碼塊。看看你的兩個條件:它們是一樣的。

我在想也許這就是你想要的,但我不確定爲什麼你要在代碼塊中爲jobCategorySelectedIndex賦值。 ESP的第一個代碼塊,因爲它已經有了值1,爲了使條件爲真

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; 
    }