¿Cómo se escribe una función de fila alterna usando el módulo de CoffeeScript?

StackOverflow https://stackoverflow.com/questions/4217825

  •  26-09-2019
  •  | 
  •  

Pregunta

Tengo aquí un ejemplo de un trozo típico de JavaScript (código que se aplicaría una clase de estilo a un fondo alterna par o impar fila de una tabla). Estoy tratando de reescribir esta CoffeeScript en mi intento de aprender eso. La sintaxis gama CoffeeScript es diferente y más Rubí-esque. Te lo agradecería un ejemplo de cómo podría hacer esto?

   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"; 
         }       
       } 
     } 
    }

Actualizar

Estoy usando jQuery y tratando de esto, pero no funciona (que hace que todas las filas #efefef):

$(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')
¿Fue útil?

Solución

Un poco más concisa:

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

Otros consejos

Es posible que también esté interesado en los selectores de meta par / impar proporcionados por jQuery

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

Si su objetivo final es sólo para aplicar un estilo diferente a las filas pares / impares, puede intentar lo siguiente:

// CSS file

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

Sin JS aquí, sólo CSS normal, lo cual es bueno ya que el estilo es una preocupación presentación.

Sin embargo, sólo funciona en navegadores (relativamente) modernas: IE 9+, Firefox 4, Chrome ...

Trate for row, i in rows, donde i mantiene el contador de bucle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top