我正在尝试在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
感谢。
答案 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)