-1

要素が動的に追加されるこのメニューを書きましたが、要素を追加した後、親の div は成長しません。

CSS:

#frstMenu
{
    position:absolute;
    top:1.5%;
    right:1%;
    width:23%;
    height:70%;
    background:rgba(0,0,0,0.6);
    border-radius: 5px;
    box-shadow: 0 1px 0 rgba(0,0,0,0.2);
    cursor: pointer;
    outline: none;
    padding-top:1%;
    overflow:hidden;
    z-index:2;
}

.menulist1{
    position:absolute;
    width:100%;
    height:15$;
    top:0%;
    right:0%;
    dispaly:none;
    text-decoration: none;
    color: #333;
    clear:both;
    border-bottom: 1px solid #e6e8ea;
    z-index:2;
}

#menulist
{
    position:absolute;
    top: 100%;
    right: 1%;
    width:23%;
    height:500%;
    background: #fff;
    border-radius: 0 0 5px 5px;
    border: 1px solid rgba(0,0,0,0.2);
    border-top: none;
    border-bottom: none;
    list-style: none;
    z-index:1;
 }

HTML:

> <div id="firstMenuList">
>         <div id="frstMenu">choose</div> 
>         <div id="menulist" class="menuList"></div> 
>         <div id="frstList1" class="menuList"></div> <- The child divs are similar this   </div>

Javascript:

function ccc( prnt , id , cls, r ) {


 var ar=new Array("hi","there","hello","world","adsad","asdsad","dsfsdfs","fdsfsdf","sfdsfsdf","soiqeqjek");

 var parent=document.getElementById(prnt);

 for (var i=0;i<ar.length;i++)
    {
    var node=document.createElement("div");

    node.setAttribute("id",id+""+i);
    node.setAttribute("class",cls);
    node.setAttribute("onclick","select('"+id+""+i+"')");
    node.style.top=(((i)*15)+2)+"%";
    node.style.right=r+"%";

    node.innerHTML=ar[i];
    parent.appendChild(node);
    }
    parent.style.display="none";
}

そして、その関数をどのように呼び出すのですか:

 ccc("menulist","frstMenu","menulist1","0");

画像:
http://i.stack.imgur.com/BpMPX.jpg

4

1 に答える 1

0

ループ (for) 内でposition: absoluteメニューを拡張する必要があります。各要素を追加するときに高さを追加するだけです。

jQuery を使用せずに高さを追加するコードは、次のようになります。

parent.style.width = parent.clientHeight + 20;

ただし、もちろん例であり、「20」の値を独自の(計算された)値に変更する必要があります。

于 2013-10-31T09:08:41.053 に答える