1

我刚开始学习jquery,我想知道我是否做得对。这是我的代码

 var images = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg','6.jpg', '7.jpg', '8.jpg', '9.jpg'];
if (window.location == 'http://localhost:81/ci/login') {
    $('body').css('background-image', 'url("public/images/login_4.jpg")');
} else if(window.location == 'http://localhost:81/ci/index.php/login') {
    $('body').css('background-image', 'url("../public/images/login_4.jpg")');
}else {
    $('body').css({'background-image': 'url(public/images/' + images[Math.floor(Math.random() * images.length)] + ')'});
}

第一个块所做的是检查位置是否与给定的字符串相同,问题是如果 url 看起来像这样 http://localhost:81/ci/login?http://localhost:81/ci/login#

代码失败......我知道有一个正则表达式解决方案。小伙伴们怎么看?

4

2 回答 2

2

你不需要任何正则表达式,你可以使用indexOf()

if(window.location.href.indexOf('http://localhost:81/ci/login') != -1)
{....}
else if(window.location.href.indexOf('http://localhost:81/ci/index.php/login' != -1)
{....}

或者更好的是,将它们组合在一起以获得更便携的代码:

if(window.location.href.indexOf('login') != -1)
于 2012-10-03T17:04:38.143 回答
1

RegEx 效率低下,对于像这样的简单情况应避免使用。

试试这个:

if (window.location.href.indexOf('http://localhost:81/ci/login') == 0) {
     ...
} ...

如果您坚持使用正则表达式(当然是开始学习的便捷工具),您可以这样做:

if (/^http:\/\/localhost:81\/ci\/login/.test(window.location.href)) {
     ...
} ...

插入符号 ^ 符号标记匹配字符串的开始 - 没有它,即使模式出现在字符串中间,这个测试也是正确的。由于斜线标记正则表达式的开始和结束,因此必须转义模式中的所有斜线。

于 2012-10-03T17:08:53.803 回答