我刚开始学习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)] + ')'});
}
第一个块的作用是检查位置是否与给定的字符串相同
问题是,如果网址看起来像这样
http://localhost:81/ci/login?
或http://localhost:81/ci/login#
代码失败了...我知道有一个正则表达式的解决方案。你怎么看待费拉斯?
答案 0 :(得分: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)
答案 1 :(得分:1)
RegEx效率低下,对于像这样的简单情况应该避免使用。
请改为尝试:
if (window.location.href.indexOf('http://localhost:81/ci/login') == 0) {
...
} ...
如果你坚持使用正则表达式(当然是一个方便的工具开始学习),你可以这样做:
if (/^http:\/\/localhost:81\/ci\/login/.test(window.location.href)) {
...
} ...
插入符号^符号表示匹配字符串的开头 - 如果不是这样,即使模式出现在字符串的中间,此测试也是如此。由于斜杠标记正则表达式的开始和结束,因此必须转义模式中的所有斜杠。