2

こんにちは、私は新しく、これを正しく行っているかどうかわかりません。

クリックされた後にアクティブなリンクを装飾する Javascript を使用します。質問は、メニュー項目の 1 つが既にアクティブになっているページをどのようにロードできますか?

例: http://moschalkx.nl/

Javascript コード:

function hlite_menu(obj){
    var lnk=document.getElementById('menu').getElementsByTagName('A');
    for(var i in lnk){
        lnk[i].className=(lnk[i]===obj)?'menu_active':'menu_idle';
    }
}

function set_menu(){
    var lnk=document.getElementById('menu').getElementsByTagName('A');
    for(var i in lnk){
        lnk[i].className='menu_idle';
        lnk[i].onclick=function(){
            hlite_menu(this);
        }
    }
}

window.onload=set_menu;

CSS:

a.menu_idle {color:#333333; text-decoration:none;}
a.menu_active {color:#333333; text-decoration:underline;}
a:visited {color:#333333; text-decoration:none;}
a:hover {color:#333333; text-decoration:underline;}
4

1 に答える 1

0

hlist_menu特定のリンクをアクティブに設定する関数が既にあるのでset_menu、最初にアクティブになるはずのリンクに対して関数からそれを呼び出すだけです

function set_menu(){
    var lnk=document.getElementById('menu').getElementsByTagName('A');
    for(var i in lnk){
      lnk[i].className='menu_idle';lnk[i].onclick=function({hlite_menu(this);}}

      if (lnk[i] /* ??? how do you know whether this is the link to activeate up front? */ ) {
          hlist_menu(lnk[i]);
      }
    }

また、これ

lnk[i].onclick=function({hlite_menu(this);}}

に単純化することができます

lnk[i].onclick = hlite_menu;

に変更すると仮定します

function hlite_menu(){
    var lnk= document.getElementById('menu').getElementsByTagName('A');
    for(var i in lnk){
       lnk[i].className = (lnk[i] === this) ? 'menu_active':'menu_idle';
    }
}
于 2012-12-08T08:04:21.950 に答える