3

我只是想问这是否有效,因为这是我的脚本按预期工作的唯一方式:

for (var j = 0; j < items.length; j) {
    for (var k = 1; k <= 3; k++) {
        $(items.eq(j)).appendTo('.col'+k);
        j++;
    }
}

请注意j在 for 语句中没有递增。

如果我增加j,由于某种原因,循环每 4 次忽略一次div,我无法解释原因。

这是此脚本的演示

我的主要问题是这是否是一种有效的方法,如果不是,您是否有更好的解决方案来分配div每列中的 s?

4

4 回答 4

5

一种更自然的方法是items直接迭代:

$(".item").each(function(n) {
    $(this).appendTo('.col' + (n % 3 + 1));
});

模运算符对值 0、1、2、0、1、2 等%进行循环。n

于 2013-11-12T17:31:04.853 回答
2

也许是这样的?

k=1;
for (var j = 0; j < items.length; j++) {
  $(items.eq(j)).appendTo('.col'+k);
  k++;
  if(k==4){
    k=1;
  }
}
于 2013-11-12T17:28:21.300 回答
2

while 语句可能读起来更好。其他明智的耸耸肩,如果它有效的话。每个人都有自己的。有很多方法去做同一件事。

var j = 0;
while (j < items.length){
    for (var k = 1; k <= 3; k++) {
        $(items.eq(j)).appendTo('.col'+k);
        j++;
    }
}

=======================

只要你有 3 个语句,或者我应该在 for 语句中说 2 个“分号”,你就可以拥有任何你想要的东西......

for (;;j++){
}

for ( ;X<K;T){
}

有时 for 语句会变得相当复杂,在初始化、条件和下一个刺激语句期间。有时它们会变得相当简单。指出它们并不总是具有全部 3 个符号。

于 2013-11-12T17:41:36.427 回答
0

我正在回答标题中的问题。如果要根据情况增加 for 循环,可以使用以下代码。

for (int i =1 ;i<10;i=i+0){
if (case)
 do your work here.
  i++;
else
  do nothing here
}
于 2017-07-05T08:13:47.460 回答