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)) {
     ...
} ...

キャレット ^ 記号は、一致する文字列の開始を示します。これがないと、パターンが文字列の途中にある場合でも、このテストは true になります。スラッシュは正規表現の開始と終了を示すため、パターン内のすべてのスラッシュをエスケープする必要があります。

于 2012-10-03T17:08:53.803 に答える