2017-06-01 93 views
0

我不知道如何解释我的问题,所以这里有更多的解释......我需要解决的问题:仅限于在页面A,B和C上显示此脚本。它们是wordpress页面,因此我不能将脚本粘贴到每个页面中。我写了这个脚本:如果URL包含字符串“字符串A”或“字符串B”或“字符串C”,请执行此操作

if(window.location.href.indexOf("url-string-a") > -1){ 
    jQuery("form").addClass("active"); 
} 

但我不知道如何将它应用到多个URL而没有复制和粘贴这3次。 (在我的实际场景中,这个脚本需要在10个页面上运行,所以我不想复制和粘贴这10次,我确信有这样做的更简单的方法。)

谢谢!

回答

2

当您考虑复制粘贴时,应该考虑一些函数,这些函数应该包装您要一遍又一遍地重复的代码。一种可能的方法:

function containsAny(haystack, needles) { 
    return needles.some(function(str) { 
    return haystack.indexOf(str) > -1; 
    }); 
} 

在这里,你创建了一个函数有两个参数:haystack(串)和needles(字符串数组),前者将被检查是否有后者。

然后,只需使用此函数内部if检查:

if (containsAny(location.href, ['url-string-a', 'url-string-b', ...])) { 
    $('form').addClass('pnt'); 
} 
+0

我得到一个错误“未捕获的ReferenceError:containsAny没有定义” – nthChild

+0

我觉得用some'的'是该解决方案的重要组成部分许多人不会很熟悉。 – Anthony

+0

@nthChild - 你在那个脚本中定义了函数吗? – Anthony