2012-02-26 67 views
0
if ((typed_edge!='Either') || (typed_edge!='Walkable')){ 
    alert("YES"); 
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]); 
    } 

如果typed_edge的值爲 將顯示警報(「YES」)。我正確使用邏輯運算符OR(||),在JavaScript中?

是不是應該不顯示?

我想要的是,當typed_edge的值爲「任一」或「可移動」時,不會顯示警報。但這似乎並非如此!

+3

它確保在該示例中被調用,因爲typed_edge總是與其中一個字符串不同,因爲它不能匹配這兩個字符串。 – 2012-02-26 22:12:45

回答

5

你有它的方式上面,你需要這樣的:

if('Either' !== typed_edge && 'Walkable' !== typed_edge) { 
// this means - it is NOT both of them 
} 

你有它現在的樣子,它說:

,如果它不是要麼

如果它不是可行的

這意味着如果它是'可行的',那麼第一個條件e評估爲'真'

這意味着警報將觸發。相反,如果它是'任一',那麼第二個條件將是'真',並且它會發射。

+0

+1 @ jens.bhurtah:您的描述更直接翻譯是'!(.. == .. || .. == ..)'' ,這可能更容易理解。 – pimvdb 2012-02-26 22:16:02

+0

+1。你是唯一一個(到目前爲止)似乎已經理解了這個問題的意圖(除了MattP,但他已經刪除了他的答案)。 – nnnnnn 2012-02-26 22:35:50

+0

我很快就要回答另一個問題 - 不能在666上停留太久......我認爲海報對語法不太確定,但看起來像其餘的被理解。 – MyStream 2012-02-26 22:38:55

1

試試這個:

if (typed_edge !== 'Either' && typed_edge !== 'Walkable'){ 
    alert("YES"); 
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]); 
} 

編輯:錯過了「不是」的問題

+0

這與@ jens.bhurtah所要求的相反:他希望如果匹配那些字符串中的任何一個,警報就會被* not *顯示出來。 – djd 2012-02-26 22:23:17

+0

現在這與問題中的代碼相同(除了使用'!=='而不是'!='),因此沒有達到預期的結果。 – nnnnnn 2012-02-26 23:39:14

+0

對不起..我已經發布了代碼,但沒有進行測試。現在它是有道理的 - 如果文本是不是和文本是不可走的 – Adaz 2012-02-26 23:49:01

1
if (typed_edge==='Either' || typed_edge==='Walkable'){ 
    alert("YES"); 
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]); 
} 

你應該做一個條件的句子中,這樣更容易打造。這樣,你只需要用所需的語法來替換語法。

0

||條件,如果被正確使用,但您使用的是not-equal-toif()語句中,試試這個:

if ((typed_edge=='Either') || (typed_edge=='Walkable')){ 
    alert("YES"); 
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]); 
} 
0

也許嘗試另一種方法。將列入白名單/加入黑名單的值加載到數組中,並檢查是否找到任何值。

if(["Either","Walkable"].indexOf(typed_edge) > -1) 
{ 
    alert('got either or walkable here'); 
}