¿Cómo se escribe una función de fila alterna usando el módulo de CoffeeScript?
-
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')
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.