2011-04-07 68 views
0

不知何故这不起作用:转变成if/else语句

if(direction != 'leftnav') direction = 'leftnav'; 
if(direction == 'leftnav') direction = 'rightie'; 

这永远是作为“rightie”

我倾向于认为这是因为他们那种覆盖。这可以用if语句来完成吗? 谢谢:)

回答

5

!=====strict equality checks

你可能只是想!=,如下所示:

if (direction != 'leftnav') { 
    direction = 'leftnav'; 
} 
else { 
    direction = 'rightie'; 
} 

或为这些简单的任务更重要的是,使用ternary operator

direction = direction == 'leftnav' ? 'rightie' : 'leftnav'; 
+0

!==不是问题,但如果其他人修好了!非常感谢:) – cmplieger 2011-04-07 02:35:33

+0

我会尽快接受答案:) – cmplieger 2011-04-07 02:36:21

+0

这是因为如果你通过第一个if语句,你更新了代码集的'方向'两次。也就是说,如果'direction = 5',第一个'if'设置'direction ='leftnav''。然后你会通过第二个'if',把它设置为'rightie'。对于这样的情况,你应该真的使用'if/else'块。 – 2011-04-07 02:52:28

1

想想你所要求的逻辑:

如果不是leftnav,那就把它做成leftnav。
[下一个陈述 - 它已被重新分配后]
如果它是leftnav,使它正确。

您正在寻找

if(direction !== 'leftnav') direction = 'leftnav'; 
else if(direction == 'leftnav') direction = 'rightie'; // can just be "else" 
2

当然,他们覆盖,看你在做什么有:

if(direction !== 'leftnav') direction = 'leftnav'; 
if(direction == 'leftnav') direction = 'rightie'; 

第一个语句设置direction为“leftnav”如果它是什么其他。所以当你第二条语句时,direction将永远是'leftnav'。第二个意思是说else if而不是if

+0

你可以用'else'而不是'else if'作为第二个。 – 2011-04-07 02:38:22