Eas*_*yBB 7 javascript regex switch-statement
var path = location.pathname;
switch(path){
case (/\/memberlist/).test(path) :getCSS('url-22.css'); break;
case (/\/register/).test(path): getCSS('url-6.css'); break;
case (/buy-credits/g).test(path): getCSS('url-7.css'); break;
case (/\/?u(\d+)friends$/).test(path): getCSS('url-8.css'); break;
case (/\/privmsg/).test(path): getCSS('url-9.css'); break;
case (/\/?u(\d+)wall$/).test(path): getCSS('url-4.css'); break;
}
function getCSS(url,media){
var a = document.createElement('link');
a.href=url;
a.media= media || 'screen';
a.rel="stylesheet";
return (document.getElementsByTagName('head')[0].appendChild(a));
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码,由于某种原因,它没有运行应该运行的函数.出于测试目的,我们可以更改var path="/memberlist"它仍然无法运行.有人可以向我解释为什么这不会运行.不要真的使用switch语句
更改
switch(path){
Run Code Online (Sandbox Code Playgroud)
至
switch(true){
Run Code Online (Sandbox Code Playgroud)
正如你在线程中看到的那样,我正在评论中.
发布的答案均未显示在开关盒中使用RegExp模式的正确方法,因此我认为我会发布:
switch (myVar) {
case 'case1':
/...do work
break
case /[a-z]*/.test(myVar) && myVar:
/...regex match, do work
break
}Run Code Online (Sandbox Code Playgroud)
switch-case不是这样的。
regex.test()方法返回一个布尔值(true/false),并且您将其与输入字符串本身进行比较,这对于任何语句都不是 true case。
您需要转换switch-case为多个if / else if / else块来执行您的逻辑。
| 归档时间: |
|
| 查看次数: |
8617 次 |
| 最近记录: |