3

私は現在、単純な ipad webapp テストピースに取り組んでおり、どういうわけか機能しない単純な switch ステートメントで立ち往生しています。javascripts window.location 文字列に従って要素をフォーマットしたい。これは、修正が簡単で恥ずかしいかもしれません。しかし、私はどういうわけかそれを理解していません: または、window.location について何か特別なことがありますか?

$(document).ready(function() {
path_c = window.location;
switch (path_c){
    case "http://192.168.1.37/ryba_testground/":
    $('#menu-item-22').addClass('current_page_item');
    alert(path_c);
    break;
    case "http://192.168.1.37/ryba_testground/?page_id=7":
    $('#menu-item-21').addClass('current_page_item');
    break; 
    case "http://192.168.1.37/ryba_testground/?page_id=9":
    $('#menu-item-20').addClass('current_page_item');
    break;
    case "http://192.168.1.37/ryba_testground/?page_id=11":
    $('#menu-item-19').addClass('current_page_item');
    break;
}
});

THX!

4

5 に答える 5

3

それとも、window.location に何か特別なものがありますか?

これはホスト オブジェクトであり、予期しない動作をすることがあります。少なくとも、これは文字列にキャストされたときに に評価されるオブジェクトですが、 -caseshrefと比較するとそうはなりません。switch使用する

var path_c = window.location.href;
于 2013-01-17T10:43:38.920 に答える
2

window.location は、ドキュメントの URL に関する情報を含む Location オブジェクトを返し、その URL を変更するためのメソッドを提供します。したがって、次のように変更します。

var path_c = window.location.href;
于 2013-01-17T10:42:13.423 に答える
0

hrefオブジェクトのプロパティが必要だと思いますwindow.location

path_c = window.location.href;

完全なスクリプト

$(document).ready(function() {
    path_c = window.location.href;

    switch (path_c){
        case "http://192.168.1.37/ryba_testground/":
        $('#menu-item-22').addClass('current_page_item');
        alert(path_c);
        break;
        case "http://192.168.1.37/ryba_testground/?page_id=7":
        $('#menu-item-21').addClass('current_page_item');
        break; 
        case "http://192.168.1.37/ryba_testground/?page_id=9":
        $('#menu-item-20').addClass('current_page_item');
        break;
        case "http://192.168.1.37/ryba_testground/?page_id=11":
        $('#menu-item-19').addClass('current_page_item');
        break;
    }
});

例: http://jsfiddle.net/9vjY9/

于 2013-01-17T10:42:08.487 に答える
0

コードは問題ないようです。alert (window.location.href)またはを試すとconsole.log(window.location.href)、テストする各ページで window.location.href が何を取得するかを正確に確認できます。これにより、問題が明らかになる場合があります。

于 2013-01-17T10:42:53.123 に答える
0

window.location.toString()またはを使用できますwindow.location.href。スイッチの使用を避けることもできます。オブジェクト マップと正規表現を使用して、URL でターゲットをフィルタリングします。

var page_idMap = {
    '7': '#menu-item-21',
    '9': '#menu-item-20',
    '11': '#menu-item-19'
}
var id = window.location.href.match(/page_id[=]([0-9]+)/i);
if (!id || !page_idMap(id[1])) {
    $('#menu-item-22').addClass('current_page_item');
} else {
    $(page_idMap[id[1]]).addClass('current_page_item');
}
于 2013-01-17T10:43:14.467 に答える