我正在努力使replace
功能在进行一场或另一场比赛时有效。它作为一个逻辑非常简单,所以我希望有一个非常简单的实现。
我试过了:
var my_url = document.URL;
var tmpl = "?tmpl=component" || "&tmpl=component"; //This is the tricky part
location.href = my_url.replace(tmpl,"");
......但它似乎不起作用。有什么想法吗?
答案 0 :(得分:3)
这不是JavaScript的工作原理,logical OR在这里没用。一种可能的方法是使用regex:
location.href = my_url.replace(/[?&]tmpl=component/, "");
此处,replace
方法将替换tmpl=component
与?
或&
开头的任何匹配。
答案 1 :(得分:1)
你可以做两次替换:
location.href = my_url.replace("?tmpl=component", "").replace("&tmpl=component", "");
或者您可以使用正则表达式:(推荐)
location.href = my_url.replace(/[?&]tmpl=component/, "");
[?&]
会匹配'?'或'&'字符。
答案 2 :(得分:1)
您将tmpl
设置为表达式"?tmpl=component" || "&tmpl=component";
的值,该值始终会计算为"?tmpl=component"
,因为它是您或语句中的第一个真值。
您可以通过多种方式使用正则表达式执行此操作:
my_url.replace(/?tmpl=component|&tmpl=component/, "");
my_url.replace(/[?&]tmpl=component/, "");
答案 3 :(得分:1)
最好的一个是:
var tmpl = (my_url.indexOf("?tmpl=component") > -1)? "?tmpl=component" : "&tmpl=component";