2016-11-25 72 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这里是追加*代码/