if(window.location.href.indexOf("=38805") > -1
|| window.location.href.indexOf("=38807") > -1
|| window.location.href.indexOf("=38816") > -1
|| window.location.href.indexOf("=38815") > -1
|| window.location.href.indexOf("=38814") > -1
|| window.location.href.indexOf("=38813") > -1
|| window.location.href.indexOf("=38811") > -1
){
do something
}
基本上,我对包含这些字符串的页面使用单独的css。我可能超过50页。想知道是否有更清晰的方式来写这个。把它们放到一个数组中?
答案 0 :(得分:3)
JS some
function,就是这样的东西:
let options = ["=38805","=38807","=38816"]; //...and the others
let link = window.location.href;
if( options.some( option => link.includes(option))){
console.log('yay! =)');
}
您实际上正在浏览您的选项数组,并询问有关数组中每个元素的问题:“您是否出现在我的网址上?”。
然后,只有当some
数组中的一个或多个元素正在回答{{1}时,if
方法才会返回true(在这种情况下,活动options
语句)问你的true
问题。
顺便说一下 -
JS有另一种方法可以涵盖类似的思维方式。 the every
metohd
这个方法,正如您可以通过其名称理解的那样,只有当数组中的所有元素回答includes
时才会返回true。
答案 1 :(得分:0)
这样的事情如何清理一下:
const ids = [38805, 38807, 38811, 38813, 38814, 38815, 38816];
let windowHrefHasId = false;
for (let id of ids) {
if (window.location.href.indexOf('=' + id.toString()) > -1) {
windowHrefHasId = true;
break;
}
}
if (windowHrefHasId) {
// do something
}