我目前正在开发一个简单的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!
答案 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;
}
});
答案 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');
}