使用window.location-string的Javascript切换问题

时间:2013-01-17 10:36:03

标签: javascript switch-statement window.location

我目前正在开发一个简单的ipad webapp测试版,并且卡在一个简单的开关语句中,不能以某种方式工作; 我想根据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!

5 个答案:

答案 0 :(得分:3)

  

或者window.location有什么特别之处吗?

它是一个主机对象,有时会无法预测。至少,它是一个对象,当它转换为字符串时,它会评估href - 但与switch - 案例进行比较时却不会发生这种情况。使用

var path_c = window.location.href;

答案 1 :(得分:2)

window.location返回一个Location对象,该对象包含有关文档URL的信息,并提供更改该URL的方法。所以改成它:

var path_c = window.location.href;

答案 2 :(得分: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/

答案 3 :(得分:0)

代码似乎没问题。尝试alert (window.location.href)console.log(window.location.href),然后您可以确切检查window.location.href为您测试的每个页面获取的内容。这可能会揭示问题。

答案 4 :(得分:0)

您可以使用window.location.toString()window.location.href,甚至可以避免使用开关,使用对象地图和正则表达式来过滤目标网址:

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');
}