2010-11-16 79 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