尝试这个:
<style type="text/css">
#banner{text-align:center;}
#banner>img{width:960px;height:187.5px;}
#nav>.selected{background-image:url('images/gradients/transparent_gradient.png');}
</style>
</head>
<body>
<div id="banner"><img src="images/fullbanner.png"></div>
<div id="wrapper">
<div id="navbar">
<ul id="nav">
<li id="nav_index"><a href="index.php">Home</a></li>
<li id="nav_archive"><a href="index.php?site=news&action=archive">News</a></li>
<li id="nav_squads"><a href="index.php?site=squads">Roster</a></li>
<li id="nav_forum"><a href="index.php?site=forum">Forums</a></li>
<li id="nav_about"><a href="index.php?site=about">Contact</a></li>
</ul>
<script type="text/javascript">
document.getElementById('nav_'+window.location.href.split('=')[1]).className='selected';
</script>
你不应该使用<center>
它,它已被弃用!
您应该匹配一个类,然后只使用 javascript 将该类添加到您的元素中,而不是使用 javascript 编写样式表来匹配元素。
而且我不太了解您的代码:
function parseUrl( url ) {
var a = document.createElement('a');
a.href = url;
return a;
}
var page=parseUrl('').search
它给""
了我,但我从来没有.search
在锚上见过......如果你想获取当前的 URL,你可以做window.location.href
.
还有一点:如果您使用var
外部函数(在全局范围内),您正在创建一个全局变量,该变量不会被删除并使用内存。然后,您可以在不想再使用它时将其删除(var a="dagjhdjgailghkagh";/*code*/;a=null;
),或者使用包含您的代码的自执行函数(闭包)。
编辑:
抱歉,#nav>selected
我的意思不是#nav>.selected
.
你可以在这里看到一个演示:http: //jsfiddle.net/VhWHp/
(但网址没有=
,所以我手动将其替换为“存档”。在您的网站中,删除该行)
是的,它先加载 CSS,然后再加载导航。但这就是 CSS 和 javascript 的真正威力:如果在加载后将类设置为元素,则该元素将具有应用于该类的样式。
编辑2:
问题是,如果你这样做split('=')[1]
,结果将类似于"news&action"
而不是"news"
.
然后,你可以使用我前段时间写的一个函数:
function sQuery(arg) {
if(window.location.search){
var que = window.location.search.substring(1);
if(arg=='string'){return que;}
que = que.split("&");
if(!arg||arg=='array'){return que;}
for(var i=0;i<que.length;i++){
var qvar = que[i].split("=");
if(qvar[0]==arg){
return qvar[1];
}
}
}
return false;
}
然后,像这样调用函数:sQuery('site')
document.getElementById('nav_'+(sQuery('site')||'index')).className='selected';
你也可以打电话sQuery('array')
或只是sQuery()
如果你想得到["site=news","action=archive"]
,sQuery('string')
如果你愿意"site=news&action=archive"
。如果你不使用它,你可以简化函数:
function sQuery(arg) {
if(window.location.search){
var que = window.location.search.substring(1).split("&");
for(var i=0;i<que.length;i++){
var qvar = que[i].split("=");
if(qvar[0]==arg){
return qvar[1];
}
}
}
return false;
}