1

menuItems 配列を作成し、それを「leftMenu」という ID を持つ div に割り当てました。

動的に生成された UL (ユーザー リスト) と LI があり、div に追加されます。

動的に生成された LI に「onmouseover」と「onmouseout」の 2 つの属性を設定しました。

これら 2 つの属性は IE7 では機能しませんが、IE8、IE9、Firefox、Safari、および Chrome では正常に機能します。

CSS:



    ul{margin:0px; padding:0px; width:200px;}
    li{list-style-type:none;}

    .defaultsMenuBtn {
    background-color: #FEE6A0;
    border-bottom: 1px solid #FFFFFF;
    color: #002C84;
    font-weight: bold;
    padding: 3px 5px;
    }

    a{text-decoration:none;}

    .defaultsMenuBtn_hover{background-color: #FFD14F; padding: 3px 5px; border-bottom: 1px solid #FFFFFF;font-weight:bold; color: #002C84; cursor:pointer;}

HTML



    <div id="leftMenu">  </div>

Javascript



    var menuItems=new Array();
    menuItems[0]="menu01";
    menuItems[1]="menu02";
    menuItems[2]="menu03";
    menuItems[3]="menu04"; 

    var menulength = menuItems.length;
    var MenuWapper = document.getElementById("leftMenu");
    var ul = document.createElement("ul");

    MenuWapper.appendChild(ul);

    for(i=0; i<menulength; i++){
    var li = document.createElement("li");
    var itemID = "item_"+i
    li.className = "defaultsMenuBtn";
    li.id = itemID
    var browser = navigator.appName;

    li.setAttribute("onmouseover","this.className='defaultsMenuBtn_hover'");
    li.setAttribute("onmouseout", "this.className='defaultsMenuBtn'");
    li.innerHTML = " "+menuItems[i]+"";
    ul.appendChild(li);

    }// end forloop

さらに情報が必要な場合はお知らせください。

4

3 に答える 3

0

ありがとうデビッド

ここで、コードにゴミの変更を加えました

li.className='defaultsMenuBtn_hover';
li.className='defaultsMenuBtn

this.className='defaultsMenuBtn_hover';
this.className='defaultsMenuBtn

今では正常に動作しています。

于 2012-09-12T11:21:23.827 に答える
0

IE7 で動作しない理由は 100% わかりませんが、IE7 では.setAttribute('event','fn')サポートされていないと思います。おそらく次のものを置き換える必要があります。

li.setAttribute("onmouseover","this.className='defaultsMenuBtn_hover'");
li.setAttribute("onmouseout", "this.className='defaultsMenuBtn'");

li.onmouseover = function() {
    li.className='defaultsMenuBtn_hover';
}

li.onmouseout = function() {
    li.className='defaultsMenuBtn';
}

とにかく、インライン属性を設定することは、リスナーを追加する良い方法ではありません.javascriptで行う方が良いです.

于 2012-09-06T07:28:03.870 に答える
0

これは、IE7 の DOM では動的に追加される要素に制限があるためです。

jQueryでlive()orメソッドを使用する必要があります。delegate()

于 2012-09-06T07:33:49.547 に答える