2016-10-11 98 views
0

我試圖檢查我的頁面的<title>標籤的某些關鍵詞,以顯示/隱藏div。每個州(4個州)在標題中有4個不同的關鍵詞。我想弄清楚所以說具有多個條件的多個if語句?

我如何寫我的if語句,如果標題有「單詞1」或「字2」或「3字」或「4個字」做這個功能

目前,我已經是這樣寫的:

if ($("title").text() == "Marketing" || "Marketing Product Support" || "Inbound Marketing Best Practices" || "Marketing Certification Help") { 
$('.marketing-board-header').show(); 
} 

if ($("title").text() == "Sales" || "Sales Product Support" || "Inbound Sales Best Practices" || "Sales Certification Help") { 
$('.sales-board-header').show(); 
} 

if ($("title").text() == "COS Design" || "COS Design Support" || "Share Your Work" || "Design Certification Help") { 
$('.design-board-header').show(); 
} 

if ($("title").text() == "community Ideas") { 
$('.idea-board-header').show(); 
} 

但是,這似乎並沒有隱藏/顯示我想要的div,我失去的東西嗎?還是有更好的方法來做到這一點?

感謝您的幫助!

+1

你的條件將始終爲真 – empiric

+0

這似乎是一個X/Y的問題,爲什麼你需要檢查的內容,所有這些字符串的元素,肯定有更簡單的方法來做到這一點? – adeneo

+0

你應該使用一個switch語句..它有點清潔,比所有ifs更容易閱讀。看到我的回答 – tsdexter

回答

1

我可能會使用switch語句來代替。

jQuery(document).ready(function(){ 
    switch (jQuery('title').text()) 
    { 
     case "Marketing": 
     case "Marketing Product Support": 
     case "Inbound Marketing Best Practices": 
      jQuery('.marketing-board-header').show(); 
      break; 
     case "Sales": 
     case "Sales Product Support": 
     case "Inbound Sales Best Practices": 
      jQuery('.sales-board-header').show(); 
      break; 
    } 
}); 

等等

+0

我忘記了關於switch語句的所有內容,這對我來說非常合適。非常感謝! –

+0

沒問題。很高興它解決了! – tsdexter

0

您試圖一次又一次搜索DOM,這是一種不好的做法,也是昂貴的。

嘗試獲得冠軍一次使用多張支票 變量,有一個錯誤在你,如果條件太 它不能在你已經做到了 修改代碼,如下面的代碼片段

的方式檢查
$(document).ready(function(){ 
    var title=$("title").text() ; 
if(title==="Marketing" || title=="Marketing Product Support" || title== "Inbound Marketing Best title==Practices" || title== "Marketing Certification Help"){ 
     $('.marketing-board-header').show(); 
} 

}); 

希望這有助於

0

只要$("title").text()確實給你你正在尋找比較值的,你的條件總是要true。因爲在您的OR條件中,您提供的字符串總是按照true計算。正確的方法做到這一點將是 -

var title = $("title").text(); 
if (title == "Marketing" || title == "Marketing Product Support" || title == "Inbound Marketing Best Practices" || title == "Marketing Certification Help") { 
    $('.marketing-board-header').show(); 
} 

if (title == "Sales" || title == "Sales Product Support" || title == "Inbound Sales Best Practices" || title == "Sales Certification Help") { 
    $('.sales-board-header').show(); 
} 

if (title == "COS Design" || title == "COS Design Support" || title == "Share Your Work" || title == "Design Certification Help") { 
    $('.design-board-header').show(); 
} 

if (title == "community Ideas") { 
    $('.idea-board-header').show(); 
} 

希望這有助於!

0

你應該寫類似

if (A==B || A==C || A==D){/*...*/} 

,但你在這種情況下,C被評估爲布爾語句本身(真/假)書面

if (A==B || C || D) 

其中,在字符串的情況下,永遠是真的。 所以,你在某種程度上寫

if($("title").text()== "Marketing" || true || true ... 
0

您遇到的問題是每個「或」運營商||應該分開整個條件。您的代碼首先評估title == 'word1',它可能會返回true或false,但會嘗試在沒有條件的情況下評估word2,因此它返回true。所以,這個修正版本如下:

if(title == 'word1' || title == 'word2'){ 
    /* code for word1 or word2 here */ 
} 

一個可能的解決方案可能是使用switch語句與fall-through。以下是它的外觀。

var title = $("title").text(); 
switch(title){ 
    case "word1": 
    case "word2": 
    case "word3": 
     /* code for word1, word2, or word3 here */ 
     break; 
    case "word4": 
    case "word5": 
     /* code for word4 or word5 here */ 
     break; 
} 

因此,您在第一個分隔符之上編寫的代碼僅適用於「word1,word2或word3」。這比if語句更清晰一些。

+1

很好的答案。看到我的;) – tsdexter

+1

在我寫完我的哈哈後,你們看到了你。偉大的思想! –

+0

更清潔。 (y)的 – tsdexter