使用';或';检查Javascript中的URL时

使用';或';检查Javascript中的URL时,javascript,jquery,Javascript,Jquery,如果指定的URL与当前页面的URL匹配,我将使用以下方法执行操作: if(window.location.href.indexOf("collections/all/colourful") > -1) { 我有一大堆这些,因为我似乎无法指定一个URL列表来应用该函数。我想给出一个10-40个URL的列表来应用它。我尝试过(以两个URL为例): 及 但两者似乎都不起作用 对不起,如果这是基本的,但我看了,找不到任何地方的答案。提前谢谢 if(window.location.href.ind

如果指定的URL与当前页面的URL匹配,我将使用以下方法执行操作:

if(window.location.href.indexOf("collections/all/colourful") > -1) {
我有一大堆这些,因为我似乎无法指定一个URL列表来应用该函数。我想给出一个10-40个URL的列表来应用它。我尝试过(以两个URL为例):

但两者似乎都不起作用

对不起,如果这是基本的,但我看了,找不到任何地方的答案。提前谢谢

if(window.location.href.indexOf("collections/all/colourful") > -1 || window.location.href.indexOf("collections/all/notcolourful") > -1) {

你不能像以前那样比较。。。基本上,您之前说过
if(window.location…或true)

您可能在寻找以下内容:

if (window.location.href.indexOf("collections/all/colourful") > -1 || 
    window.location.href.indexOf("collections/all/notcolourful") > -1) { ... }

使用or语句时,需要重复整个命令

if(window.location.href.indexOf("collections/all/colourful") > -1 || window.location.href.indexOf("collections/all/notcolourful") > -1)
试试这个

if (window.location.href.indexOf("collections/all/colourful") > -1 || window.location.href.indexOf("collections/all/notcolourful") > -1)

我只需浏览一个列表(数组),直到您找到一个:

var found = false;

for (var x = 0; x < listOfUrls.length; x ++){
  if(window.location.href.indexOf(listOfUrls[x] > -1) {
     found=true;
     break;
  }
}

if(found){//do something 
var-found=false;
对于(var x=0;x-1){
发现=真;
打破
}
}
如果(找到){//做点什么

如果URL列表很长,那么这将不会太冗长,也更清晰:

var arrOfUrls = [url1, url2, url3]; //replace these with your url strings

var atLeastOneMatches = arrOfUrls.some(function(url) {
  return window.location.href.indexOf(url > -1);
});

if (atLeastOneMatches) {
  //do stuff here
}

只有一个表达式:

/collections\/all\/(not)colourful/.test( window.location.href )

我知道你想做什么,这将是一种很好的语法。但逻辑上的
并不是这样工作的。打开JavaScript控制台,粘贴
“collections/all/coloful”| |“collections/all/notcoloful”
,了解实际发生的情况。只是他们正在测试的字符串不是以“/”开头的(只是说)@Jonah然后你可以把所有的模式放到一个数组中(像其他解决方案一样),然后使用
新的RegExp(arr.join(“|”)测试(window.location.href)
或者其他什么:)@伊恩,在那一点上,你为什么要使用这些模式呢?除非有一个巨大的节约,即你只有少数几个模式来生成40个URL,否则我认为使用regex's here是一个不必要的复杂问题,尽管是一个小问题。@Jonah我只是想解释一下如何使用它。我不是说它比另一个sol好/坏使用
indexOf
@Jonah的解决方案相信我,我真的很喜欢你使用
的解决方案。some()
-我经常忘记这些“特殊”数组方法,特别是当它们非常适合这种情况时。不幸的是,我今天的投票已经用完了,否则我会投你一票:)我已经看到了一些其他的答案,但这对我来说足够简单,也正是我想要的。再次感谢。@ripsnorter虽然这对您来说足够简单,但它实际上只用于两次比较。如果您最终实现了40个,那么这将是一个混乱,除非使用不同的解决方案将它们存储在一个数组中,并且对它们进行操作。@Ian.好的,我把我的答案改成了一个更具可伸缩性的。虽然这个答案对我来说已经足够好了,但我认为如果我选择的答案是可伸缩的、更好的解决方案,它将更好地服务于社区。谢谢。@ripsnorter我同意,你应该使用更具可伸缩性的版本……因此,你可以传递一个URL数组通过一个几乎与此完全相同的函数。享受编程:)@ripsnoter我的意思是,这个答案肯定回答了您当前的问题,并提供了正确的逻辑。我只是想指出,最好进行一些比较,而不是40:)奇怪的是,这不是+1 d,考虑到它的扩展性更好,所以…+1 Plus我刚刚注意到Stu-Un作为您的个人资料图片,如果可能的话,我会再次投票:D@Zenith哈哈,谢谢。你是第一个正式注意到(或者至少是评论)这么多的人
var arrOfUrls = [url1, url2, url3]; //replace these with your url strings

var atLeastOneMatches = arrOfUrls.some(function(url) {
  return window.location.href.indexOf(url > -1);
});

if (atLeastOneMatches) {
  //do stuff here
}
/collections\/all\/(not)colourful/.test( window.location.href )