我有一种情况,我想写一些内容来检查页面网址的字符串。
url example 1 - http://something.com/else/apples
url example 2 - http://something.com/else/oranges
url example 3 - http://something.com/else/bananas
...
url example 10 - http://something.com/else/kiwis
伪代码:
if(window.location.href.indexOf('apples')>-1)
{
alert('apples');
}
if(window.location.href.indexOf('oranges')>-1)
{
alert('oranges');
}
....
正如你所看到的那样,拥有多个if语句看起来相当难看,所以我正在寻找一些关于如何使用单个if语句或可能的switch语句来实现这一点的建议。我对一个带有几个“OR”语句的if语句有了一个想法,但我不确定这是否是解决这个问题的最好方法。
谢谢
答案 0 :(得分:4)
这样的东西?
let urls = ["url1.com", "url2.com"]
urls.forEach((url) => {
if (window.location.href.indexOf(url) > -1) {
alert("Do something")
}
})
我们的想法是使用数组而不是许多变量,并使用forEach
循环遍历其项目答案 1 :(得分:1)
喜欢这个?
var fruits = ['apples', 'oranges', 'bananas'];
var link = window.location.href.split("/").pop();
if (fruits.includes(link)) {
alert(link);
}
答案 2 :(得分:0)
喜欢这个吗?
alert(window.location.href.split("/").pop());
这需要在最后/
之后发生的任何事情并提醒它。当然,这会提醒任何。如果有"白名单"要提醒的事情,那么@Purefan可能会有更好的解决方案。这只是一个快速简单的解决方案。
答案 3 :(得分:0)
如果您需要根据URL的内容输出特定信息,那么我建议使用JSON快速获取信息。这将允许您避免使用循环或任何条件语句,并且您基本上可以获得所需的任何信息。该信息甚至可以包含要加载的HTML页面/元素 -
var pageInfo = {
"apple": "some info about apples",
"orange": "some other info about oranges",
"banana": "more banana information"
}
var urlPage = window.location.href.split("/").pop();
var info = pageInfo[urlPage];
//to test -
console.log(pageInfo["apple"]);
console.log(pageInfo["orange"]);
console.log(pageInfo["banana"]);
答案 4 :(得分:0)
您要做的是将特定值映射到特定结果。您可以使用实际地图执行此操作。您可以将任何内容与地图中的值相关联,甚至是函数。然后,使用您喜欢的方式循环对象。这是一个愚蠢的例子:
var fruitMap = {
'oranges': 'I don\'t like those.',
'apples': 'Three a day keeps the doctor away.'
};
for (var fruit in fruitMap) {
if (window.location.href.indexOf(fruit) > -1) {
alert(fruitMap[fruit]);
}
}
答案 5 :(得分:0)
switch
的行为与if
相同,用于增加代码的可读性
$('#fruit').keyup(function() {
var c = $(this).val();
var fruits = ['apple', 'banana', 'pear', 'orange', 'raspberry', 'strawberry', 'wildberry', 'cranberry', 'blueberry', 'limone', 'grapefruit', 'kiwi', 'mango'];
for (var i = 0; i < fruits.length; i++) {
switch (c) {
case fruits[i]:
console.log(fruits[i]);
break;
default:
'';
break;
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Enter a fruit: <input type="text" id="fruit">