试图用jQuery操纵CSS样式

时间:2012-06-17 06:43:08

标签: javascript jquery css

我在页面的侧面有一个导航栏,并希望根据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;
}

我会感谢你提示我在哪里出错了,在这里。

3 个答案:

答案 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.
 });