Coffeescript翻译 - 嵌套for循环

时间:2013-03-07 03:07:47

标签: javascript loops coffeescript

我正在尝试在coffeescript中学习javascript,并且通过在codepen上重写一些简洁的javascript来练习。出了点问题,我认为这是因为我不知道如何在咖啡脚本中编写嵌套循环。原始代码是:

for(var j = 0 ; j<yElems;j++){
  for(var i = 0 ; i<xElems;i++){

var elem = document.createElement('div');

if(i%2==0){
  elem.classList.add('bs');
}else{
  elem.classList.add('bs1');
}

elem.style.top = j*30-20+'px';    
elem.style.left = i*30-20+'px';    
elem.style.zIndex =100- j+''+i;
elem.style.backgroundColor = colors[Math.round(Math.random()*4)];
body.appendChild(elem); 
elems.push(elem);
 }
}

我的'翻译'是:

grid = -> 
  for i in xElems
    elem = document.createElement 'div'
    if i % 2 is 0 then elem.classList.add 'bs' else elem.classList.add 'bs1'
    elem.style.top = j*30-20+'px'   
    elem.style.left = i*30-20+'px'    
    elem.style.zIndex = 100- j+''+i
    elem.style.backgroundColor = colors[Math.round(Math.random()*4)]
    body.appendChild(elem)
    elems.push(elem)

for j in yElems
  grid()

不确定什么不起作用。如果不是这样,我仍然不确定。原笔位于:

http://codepen.io/pixelgrid/pen/Hxkhs

我的叉子是:

http://codepen.io/bubbaJackson/pen/tyLGC

感谢。

1 个答案:

答案 0 :(得分:2)

for i in xElems

应该是

for i in [0..xElems] by 1

同样应该对j循环也这样做。

我在xElems中会尝试将xElems视为一个数组,并为您提供数组中的每个元素。 xElems似乎是原始js中的数字,因此您希望迭代一个范围,您可以使用[a..b]表示法进行迭代。请注意,[a..b]将排除b,而[a...b]将包含b。

的值

更新

正如mu is too short在评论中指出的那样,这直接汇编到您要复制的内容:for(i = 0; i < xElems; ++i)