2012-05-21 58 views
1

UPDATE1:更新了JS拨弄链路抱歉设定的间隔是不工作,因为我想它显示所述动态增长列表

我有一个阵列被动态增长(数获取添加每1秒)。我必须拆分这个列表并将它显示在列中,我实际上在显示ul和li(是的只有ul和li没有表)的列表中有问题。用户可以指定最大列数(一旦有这么多,停止添加列)和最小列高(不添加列可能包含少于这许多项目)。此外,任何添加的列中的项目数量必须与前一列相同,或者比前一列少1。为最大列= 3和最小的塔高输出= 3

enter image description here

我能够迄今做的是:

  1. 使用设定的时间间隔来添加数每1秒

  2. 在4秒后将来电号码放入数组,如[1] , [1,2] ... [1,2,3,4]。这个阵列被称为范围如果该主阵列

  3. 主阵列(范围)分裂成多个子阵列(new_range),用于例如

    (范围)= [1,2,3,4, 5,6,7,8,9,10]

    new_range(第一循环之后)= [1,2,3,4]

    new_range(第二循环后)= [5,6,7]

    new_range(after第三环)= [8,9,10]

  4. 所以现在我需要垂直显示每个新的范围使用UL和Li所以我试图做类似$('ul').append('<li>' + new_range[j] + '</li>');是j是new_range数组索引

我有显示彼此相邻像使用CSS样本输出的李项问题,这将彼此相邻

JS fiddle link

是巨大的,如果有人能告诉我如何显示每次迭代后的李项
+0

创建每个列作为单独的ul元素(使用CSS将它们并排放置)可接受的解决方案? – nnnnnn

+0

你可以接受 –

回答

1

我发现你的小提琴太混乱了,所以我从头开始。

以下函数采用值数组data,最大列数cols以及每列的最大大小size。如果data的值超过cols * size,则不会显示剩余物。它创建列作为单独的ul元素,每个元素都附加到一个容器,该容器被假定为存在id为“container”(该函数所做的第一件事是清空该容器)。

function createList(data, cols, size){ 
    var $ul, 
     $container = $("#container").empty(); 

    $.each(data, function(i,v){ 
     if (i >= cols * size) 
      return false; 
     if (i%size === 0) 
      $ul = $("<ul/>").appendTo($container); 

     $ul.append($("<li/>").html(v)); 
    }); 
} 

ul元素可以并排显示(即,,与此CSS列):

ul { float : left; } 

工作演示,使用setInterval()增加值到数组:http://jsfiddle.net/VXAHy/1/

我没有我的回答表现出任何的setInterval()或阵列填充码的,因为在这里这是所有不相关的:上面的函数总是重新绘制基于传入的数组的所有列(我在我的演示提琴中显示间隔的东西)。