0

私は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

ありがとう。

4

1 に答える 1

2
for i in xElems

する必要があります

for i in [0..xElems] by 1

j ループについても同じことを行う必要があります。

i in xElems は、xElems を配列として扱い、配列内の各要素を提供しようとします。[a..b]xElems は元の js では数値のように見えるため、表記法を使用して範囲を反復処理したいとします。[a..b]は b を除外します[a...b]が、b の値は含めます。

アップデート

mu is too shortコメントで指摘されているように、これは基本的にコピーしようとしていたものに直接コンパイルされます。for(i = 0; i < xElems; ++i)

于 2013-03-07T03:17:03.090 に答える