0

ページの横にナビゲーション バーがあり、GET パラメータに応じていくつかのエントリの 1 つを強調表示したいと考えています。

少し読んだ後、私はこの解決策にたどり着きましたが、うまくいかないようです:

.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;
}

ここで、どこが間違っているかを示すヒントに感謝します。

4

3 に答える 3

3

highlight_me 関数を呼び出すときに「id」パラメーターを渡していません。

于 2012-06-17T06:47:58.880 に答える
1

idパラメータとして必要な理由はありますか? 関数内のどこにも使用していません。電話querystringで十分ではないでしょうか?その場合、そのif(id.length)部分を行う必要はありません。デフォルトで に設定idし、それに応じて変数を変更するための switch ステートメントを用意します。'home'

これが私が話していることです:

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';
}
于 2012-06-17T07:02:57.220 に答える
0

関数は、この関数を呼び出すときに供給されない$(highlight_me());パラメーターを必要とします。そして、関数を内部に配置します。iddocument.ready

 $(document).ready(function() {
   // put all your function here.
 });
于 2012-06-17T06:53:02.460 に答える