2010-11-18 5 views
3

ここでは、典型的なJavaScriptのチャンク(テーブル内で奇数行または偶数行が交互になるようにバックグラウンドスタイルクラスを適用するコード)の例を示します。私はこれをCoffeeScriptで書き直そうとしています。 CoffeeScriptの範囲構文は、Ruby風のものとは異なります。私はあなたがこれをやる方法の例を本当に感謝していますか?CoffeeScriptでモジュラスを使って交互に行を書く方法は?

function alternate(id){ 
    if(document.getElementsByTagName){ 
     var table = document.getElementById(id); 
     var rows = table.getElementsByTagName("tr"); 
     for(i = 0; i < rows.length; i++){   
    //manipulate rows 
     if(i % 2 == 0){ 
      rows[i].className = "even"; 
     }else{ 
      rows[i].className = "odd"; 
     }  
     } 
    } 
    } 

更新

私は(それがすべての行#efefefます)jQueryのを使用して、これをしようとしているが、それは動作しませんよ。

$(document).ready -> 
    rowCount = $('tbody tr') 
    for row in rowCount   
     if row.length % 2 == 0 
      $('tbody tr').css('background-color', '#363636') 
     else 
      $('tbody tr').css('background-color', '#efefef') 

答えて

5

もう少し簡潔:

for row, i in $('tbody tr') 
    color = if i % 2 is 0 then '#363636' else '#efefef' 
    $(row).css 'background-color', color 
+0

これはとてもエレガントです!これで何が起こっているのか説明してください。私はプログラミングが初めてです。コーヒースクリプトのドキュメントはまだ初心者のためにあまりにも疎ですが、私は良い説明を得る場合、私は理解することができます – Handloomweaver

+1

確かに。 "for row、i list in"は、変数 "row"に割り当てられた項目と、変数 "i"に割り当てられた現在のループインデックス番号を持つリスト内のすべての項目に対してループを実行します。 "$(tbody tr)"はタグのリストです。次の行は、 "i"が偶数か奇数かに応じて、2つのCSSカラーのいずれかを変数 "color"に割り当てます。最後に、3行目はjQueryの "css"関数を使用して "backround-color" CSSスタイルを設定しています。 – jashkenas

+0

これは素晴らしいことです!私はインデックスを使用できる変数に割り当てる方法を理解できませんでした。 – dontangg

0

iがループを保持しているfor row, i in rowsを、試してみてくださいカウンタ。

5

あなたの最終目標は、ちょうどに異なるスタイルを適用する場合あなたはまた、jqueryの

$('tbody tr:even').css 'background-color', '#363636' 
$('tbody tr:odd').css 'background-color', '#efefef' 
1

が提供する偶数/奇数メタセレクタに興味がある可能性があり奇数/偶数行を試してみてください:

// CSS file 

#myTable tr:nth-child(even) { background-color: #363636; } 
#myTable tr:nth-child(odd) { background-color: #efefef; } 

いいえJSここでは、単純なCSSですが、スタイリングは良好ですプレゼンテーションの懸念。

しかし、それは(比較的)現代的なブラウザでのみ動作します:IE 9+、Firefox 4+、Chrome ...

関連する問題