8

私はこのコードを持っています:

count = $content.find('.post').length;              
for x in [1...count]
    /*
    prev_el_height += $("#content .post:nth-child(" + x + ")").height();
    */
    prev_el_height += $content.find(".post:nth-child(" + x + ")").height();

これが

for (x = 1; x < count; x++) { prev_el ... }

しかし、それはこれに変わります:

for (x = 1; 1 <= count ? x < count : x > count; 1 <= count ? x++ : x--) {

誰かが理由を説明できますか?

編集:期待される構文を出力するにはどうすればよいですか?

4

4 に答える 4

22

CoffeeScriptでは、byキーワードを使用してループのステップを指定する必要があります。あなたの場合:

for x in [1...count] by 1
  ...
于 2012-04-20T13:15:00.340 に答える
3

1からへのループを要求していますが、それは常に1以上になるとcount想定しています。count生成されたコードはその仮定をしていません。

したがって、countが1より大きい場合、ループカウンタは毎回インクリメントされます。

for (x = 1; x < count; x++) { /* ... */ }

ただし、countが1未満の場合、ループカウンタは毎回デクリメントされます。

for (x = 1; x > count; x--) { /* ... */ }
于 2012-04-20T12:42:53.217 に答える
2

さて、あなたxは1からに行きたいですcount。コードはcount、1より大きいか小さいかをチェックしています。

countが1より大きい場合は、 。より小さい間は増分 する必要があります。xcount

countが1より小さい場合は、 。より大きい間はデクリメント する必要があります。xcount

于 2012-04-20T12:44:04.037 に答える
0

将来の参考のために:

$('#content .post').each ->
    prev_el_height += $(this).height()

:nth-childと同等であると.eq()仮定すると、同じ効果がありx、数を超えると要素はタイプミスになります。

于 2012-04-21T03:13:42.567 に答える