Coffeescript翻译-嵌套for循环

Coffeescript translation - nested for loops

本文关键字:for 循环 嵌套 翻译 Coffeescript      更新时间:2023-09-26

我试图在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

谢谢。

for i in xElems
应该

for i in [0..xElems] by 1

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

xElems中的

i将尝试将xElems视为一个数组,并给出数组中的每个元素。xElems在原始js中似乎是一个数字,因此您希望迭代一个范围,这可以通过使用[a..b]符号来实现。注意,[a..b]将不包括b,而[a...b]将包括b的值。

更新

正如mu is too short在评论中指出的,这基本上直接编译成你想要复制的内容:for(i = 0; i < xElems; ++i)