2016-11-25 71 views
1

我有一個數組中的JavaScript稱爲menuElm具有在它<ul>元素:追加陣列的一類中的JavaScript

<ul id="1"></ul> 
<ul id="2"></ul> 
<ul id="3"></ul> 

我在HTML有一個網頁,有以下幾點:

<ul id="menu"> 
    <li class="menu-item"></li> 
    <li class="menu-item"></li> 
    <li class="menu-item"></li> 
</ul> 

我想將menuElm的元素添加到HTML頁面,所以它看起來像這樣:

<ul id="menu"> 
    <li class="menu-item"> 
     <ul id="1"></ul> 
    </li> 
    <li class="menu-item"> 
     <ul id="2"></ul> 
    </li> 
    <li class="menu-item"> 
     <ul id="3"></ul> 
    </li> 
</ul> 

我曾嘗試以下,但<ul>要素只是不會在頁面也不在代碼中顯示:

function CreateMenu() { 
    var menuElm; 
    var k = 0; 

    menuElm = createElm("ul"); 
    menuElm.id = ++k; 

    for (var i = 0; i < menuElm.length; ++i) { 
     document.getElementsByClassName("menu-item")[i].appendChild(menuElm[i]); 
    } 
} 

我是新的JavaScript,我究竟做錯了什麼?

+0

它是使用數字作爲ID最好避免。 [see here](http://stackoverflow.com/questions/5672903/can-i-have-a-div-with-id-as-number) – aahhaa

+0

你在函數中聲明'var k = 0' 'menuEl.id'將始終爲1.同樣,不清楚'createElm(「ul」)'返回的是什麼,假設它是'document.createElement()'的快捷方式。但是,當'CreateMenu'運行循環時,無論哪種方式都是無用的,因爲'menuElm'將始終是單個元素,所以在這種情況下不適合使用'menuElm.length'。你最好保存'document.getElementsByClassName(「menu-item」)'的結果並循環遍歷它的長度。 – GillesC

+0

我將'menuElm.length'改爲'3',並在循環中添加了'createElm(「ul」)'',它和'document'一樣。creatElement(「ul」)'現在它創建了3個不同的id-s,儘管它不會將它添加到類中 – balintpekker

回答

4
menuElm.length 

ul元件不具有的長度,所以你從0循環到0,這是0迭代。


menuElm = createElm("ul"); 

該功能沒有定義。您需要document.createElement('ul');


menuElm = createElm("ul"); 
menuElm.id = ++k; 

你似乎是一個創建列表項,然後改變其ID,並多次追加它。

每次繞着循環時都需要一個新的列表項。


appendChild(menuElm[i]); 

你已經處理menuElm作爲一個元素之前。這不是一個數組,[i]在這裏沒有意義。

+0

另外,'++ k'在遞增之前返回值,所以如果這種方法奏效,你最終會得到0 1 2而不是1 2 3。 – Roberrrt

+1

@Roberrrt你弄錯了方向;) – Archer

+0

Nooooooooooo。 NOOOOOOOO。不再與昆汀。爲什麼在支持>時支持失敗。 – Roberrrt

0
$("#menu").find('li').each(function(i){ 
    $(this).append(menuElm[i]); 
}); 

/*如果你想使用jquery這裏是追加*代碼/