我在页面的侧面有一个导航栏,并希望根据GET参数突出显示其中一个条目。
经过一番阅读后,我找到了这个解决方案,但它似乎不起作用:
.html中的:
<script type="text/javascript">
$(document).ready(highlight_me());
</script>
JS函数:
function highlight_me() {
// ensure all links have class 'regular'
document.links.className = 'regular';
// determine which link to highlight
var id = 'home';
switch (querystring('view')) {
case "set":
id = 'settings';
break;
case "mc":
id = 'messages';
break;
default:
id = 'home';
}
// highlight link
document.getElementById(id).className = 'highlight';
}
function querystring(key) {
// extract GET-value for key
var re = new RegExp('(?:\\?|&)' + key + '=(.*?)(?=&|$)', 'gi');
var r = [], m;
while ((m = re.exec(document.location.search)) != null) r[r.length] = m[1];
return r;
}
CSS类:
a, a.regular, a:visited {
color: #f0ce96;
}
a:active, a:hover, a.highlight {
text-decoration: underline;
color: #ffeebb;
}
我会感谢你提示我在哪里出错了,在这里。
答案 0 :(得分:3)
调用highlight_me函数时,您没有传递“id”参数。
答案 1 :(得分:1)
您需要id
作为参数的原因是什么?你没有在函数内的任何地方使用它。拨打querystring
不应该足够吗?
在这种情况下,您不需要执行if(id.length)
部分。默认情况下将id
设置为'home'
,然后使用switch语句相应地修改变量。
这就是我所说的:
function highlight_me() {
// ensure all links have class 'regular'
document.links.className = 'regular';
// Set id to home by default
var id = 'home';
switch (querystring('view')) {
case "set":
id = 'settings';
break;
case "mc":
id = 'messages';
break;
default:
id = 'home';
}
// highlight link
document.getElementById(id).className = 'highlight';
}
答案 2 :(得分:0)
函数$(highlight_me());
需要一个参数id
,当你调用这个函数时它不会提供。并将你的函数放在document.ready
中。
$(document).ready(function() {
// put all your function here.
});