2016-08-23 68 views
1
var pathname = window.location.pathname; 
if (! (pathname.indexOf('edit') > -1)) { 
    // Do stuff... 
} 

在上面的例子中,我否定并且只运行不包含'edit'的页面上的JS,我想将其更改为接受多个参数,例如“edit”,“delete “,”管理员“,”设置“。indexOf多个参数

这样做的最好方法是什么?

回答

2
var pathname = window.location.pathname; 

if (["edit", "delete", "admin"].some(x => pathname.indexOf(x) > -1)) { 
    // ... 
} 

没有箭头功能为旧的浏览器

var pathname = window.location.pathname, 
    isSpecialPath = ["edit", "delete", "admin"].some(function(x) { return pathname.indexOf(x) > -1; }); 

if (isSpecialPath) { 
    // ... 
} 

Array.prototype.some()的一些()方法测试所述阵列中的一些元件是否通过由提供的功能来实现的测试。

+0

不错,但使用现代功能,所以将取决于浏览器(不适用于IE11) –

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some# Polyfill – mplungjan

+0

@ freedomn-m'.some()'自IE9起可用。箭头功能很容易用“正常”功能代替。 – Andreas

1

你可以制作一个循环,看看是否有任何东西被找到,然后做你想做的事情。

var pathname = window.location.pathname; 
var names = ["edit", "delete", "admin", "settings"]; 
var found = false; 

for(var i = 0; i < names.length; i++) { 
    if(pathname.indexOf(names[i]) > -1) { 
     found = true; 
     break; 
    } 
} 

if(!found) { 
    // do stuff 
} 
0

您可以使用正则表达式来测试多个值,例如:

var pathname = window.location.pathname; 

var textToSearchFor = /(edit)|(delete)|(ADDMORE)/; 

if (path.match(textToSearchFor) == null) { 
    //Entered Text not available 
    //alert("Not available"); 
} 
else { 
    //Entered Text available 
    //alert("Available"); 
} 

参考:How to search for multiple texts in a string, using java script?

0

你可以用这个尝试:

var pathname = window.location.pathname; 
 
if((/edit|delete|admin|settings/i).test(pathname)) 
 
{ 
 
    console.log("exists"); 
 
} 
 
else 
 
{ 
 
    console.log("not exists"); 
 
}