javascript数组循环创建元素

时间:2011-12-16 09:56:31

标签: javascript jquery arrays

我正在尝试根据数组中的值数创建li元素。 基本上,对于数组中的每个键,都需要创建一个li元素。

<ul class="alpharow">
</ul>
    $(".alpharow").each(function() {

    var alpha = new Array();
        alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
        alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];
     var n = alpha.length;

        for (i = 0; i < n; i++) {
            //$("li:eq(" + i + ")");

           var li_tag = '<li class="alpha_li"></li>';
        }

        $(".alpharow").append(li_tag);

        //$("span").text("There are " + n + " kys.");

    });

所以,a,b,c等......都有自己的<li>

感谢您的帮助,如果有什么不清楚,请告诉我。

3 个答案:

答案 0 :(得分:2)

你有阵列数组。如果您需要为所有人创建LI,请使用以下示例:

$(".alpharow").each(function() {

    var alpha = new Array();
    alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
    alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];

    // go thru the main array
    for (var key in alpha) {
        // go thru the inner arrays
        var arr = alpha[key];
        for (i = 0, n = arr.length; i < n; i++) {
            //apped LI's
            $(".alpharow").append($('<li></li>', { class: 'alpha_li', text: arr[i] }));
        }
    }       
});

代码:http://jsfiddle.net/m8vwz/1/

答案 1 :(得分:1)

那里有几个问题:

  • 循环中的这段代码没有用处:$("li:eq(" + i + ")");
  • $(".alpharow").append(li_tag); 移动到循环中(但每次都不要进行查找,将$(".alpharow")的结果缓存在顶部的变量中,然后再调用{ {1}},然后重复使用它。)
  • 您的eachalpha,您没有添加元素。 (JavaScript术语中的数组元素是数组对象中的属性,名称完全由数字组成。)您要为它添加几个属性,但它们不是元素,因此{{1}将是Array
  • 您添加的两个属性的是每个数组,因此您需要遍历它们

答案 2 :(得分:1)

这一切都源于你如何处理数组。在JS数组中没有定义的键名,而是使用了一个对象,所以这段代码可以工作:

var alpha = { };
alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];

$.each(alpha, function() {
    $.each(this, function() {

        var li_tag = '<li class="alpha_li">' + this + '</li>';

        $(".alpharow").append(li_tag);
    });
});

alpha已更改为对象,我们设置了thisthat个键。然后我们使用jQuery的$.each()循环访问顶层对象,然后通过每个键到达我们的数组,然后将它们添加为li元素。