2010-11-16 194 views
2

好的,我根據你的建議做了,但有點它看起來amatuerish哈.. COS它重複每個百分比組相同的事情:CSS和消息。我想知道是否有另一種方式來改變它?如果不是這樣,我行與這個..運營商不能使用?

如果(69 < percentDiscount & & percentDiscount < 101){

 $(this).find("#percentoff").html('&gt; 70% off'); 
     $(this).find("#percentoff").addClass('badge70'); 
    } 

    else if (49 < percentDiscount && percentDiscount < 70) { 

     $(this).find("#percentoff").html('&gt; 50% off'); 
     $(this).find("#percentoff").addClass('badge50'); 
    } 

    else if (29 < percentDiscount && percentDiscount < 50) { 

     $(this).find("#percentoff").html('&gt; 30% off'); 
     $(this).find("#percentoff").addClass('badge30'); 
    } 


    else if (19 < percentDiscount && percentDiscount < 30) { 

     $(this).find("#percentoff").html('&gt; 20% off'); 
     $(this).find("#percentoff").addClass('badge30'); 
    } 

回答

3

你檢查一個percentDiscount這均高於號碼,所以在你的第二個if檢查,有沒有數字左側,同時也是以上 69.它應該是這樣的,而不是(讓你的排除邏輯):

if (percentDiscount > 69 && percentDiscount < 101) {  
    $(this).find("#percentoff").html('&gt; 70% off'); 
    $(this).find("#percentoff").addClass('badge70'); 
}  
else if (percentDiscount > 49 && percentDiscount < 69) {  
    $(this).find("#percentoff").html('&gt; 50% off'); 
    $(this).find("#percentoff").addClass('badge50'); 
}  
else if (percentDiscount > 29 && percentDiscount < 49) {  
    $(this).find("#percentoff").html('&gt; 30% off'); 
    $(this).find("#percentoff").addClass('badge30'); 
} 

交換的條款,以便他們在同一順序像我有以上,我想你會發現它的更容易閱讀。不過,總體而言你的條件排除69,並49點特別,所以我想你的邏輯改成這樣:

if (percentDiscount > 69) {  
    $(this).find("#percentoff").html('&gt; 70% off'); 
    $(this).find("#percentoff").addClass('badge70'); 
}  
else if (percentDiscount > 49) {  
    $(this).find("#percentoff").html('&gt; 50% off'); 
    $(this).find("#percentoff").addClass('badge50'); 
}  
else if (percentDiscount > 29) {  
    $(this).find("#percentoff").html('&gt; 30% off'); 
    $(this).find("#percentoff").addClass('badge30'); 
} 

第一if抓住上面69,下高於49歲,等...簡單得多:)

+1

糾正,她檢查一個數字是否低於一個變量,然後如果該變量低於一個不同的數字。第二次檢查使第一次檢查變得多餘。 – 2010-11-16 10:37:45

+1

@安迪 - 你是對的,交換條件使得非常必須閱讀,修正 – 2010-11-16 10:38:43

+0

以上的錯誤@尼克:是的,我也是第一次 - 我幾乎總是在這些條件下首先寫變量。 +1 – 2010-11-16 10:39:35

5

你已經得到了>南轅北轍。讓我們來看看第一個爲例:(我逆轉的首要條件,因爲我認爲這讓接下來會發生什麼更明顯)

if (percentDiscount > 69 && percentDiscount > 101) 

所以percentDiscount必須大於69和大於101你想

if (69 < percentDiscount && percentDiscount < 101) 

這應該做你期望的。

+1

這不會做什麼預計,因爲'49'和'69'百分比不會打這些'if'情況下:) – 2010-11-16 10:44:06

+0

@nick,謝謝你的幫助。我上面編輯過。我仍在計算如何更改代碼,因此它不需要依賴數字來檢查。 mm .. – joe 2010-11-18 04:51:43

2

在第一次測試中,你測試percentDiscount是否比101更大的大於69 我想你的意思是這樣的:

if (69 < percentDiscount && percentDiscount < 101) ... 

其餘的測試有相同的問題。

2

看看這一行:

if (69 < percentDiscount && percentDiscount > 101) { 

這裏有兩個問題。首先:你做的比較是錯誤的。從這個if語句,你檢查是否percentDiscount是大於69,如果它大於101所以,這將舉行只有當它比101更大的是什麼,你可能想是這樣的:

if (69 < percentDiscount && percentDiscount < 101) { 

這可以寫更好的爲:

if (percentDiscount > 69 && percentDiscount < 101) { 

但是,仍然有一個問題。運算符優先級。最後一個例子應該寫成

if ((percentDiscount > 69) && (percentDiscount < 101)) { 

避免含糊不清。

+1

運算符優先級在這裏不是問題,邏輯和/或具有比'<' and '>'更低的優先級。 – 2010-11-16 10:56:42

+0

@安迪:我意識到這一點,但它應該是一個很好的習慣使用括號,因爲這樣的東西並不總是明顯的 – darioo 2010-11-16 10:59:15

+0

感謝您的幫助! – joe 2010-11-18 04:50:34