2016-10-11 145 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