2011-04-07 95 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