Come si scrive una funzione fila alternata utilizzando il modulo in CoffeeScript?
-
26-09-2019 - |
Domanda
Ho un esempio qui di un pezzo tipico di JavaScript (codice che si applicherebbe una classe sfondo stile a un alternata pari o dispari riga in una tabella). Sto cercando di riscrivere questo CoffeeScript nel mio tentativo di apprendere che. La sintassi gamma CoffeeScript è diverso e più Ruby-esque. Mi piacerebbe davvero apprezzare un esempio di come si dovrebbe fare questo?
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";
}
}
}
}
Aggiorna
sto usando jQuery e provare questo, ma non funziona (si fa tutte le righe #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')
Soluzione
Un po 'più conciso:
for row, i in $('tbody tr')
color = if i % 2 is 0 then '#363636' else '#efefef'
$(row).css 'background-color', color
Altri suggerimenti
Si può anche essere interessati a meta selettori pari / dispari forniti da jquery
$('tbody tr:even').css 'background-color', '#363636'
$('tbody tr:odd').css 'background-color', '#efefef'
Se il vostro obiettivo finale è solo quello di applicare uno stile diverso alla pari / righe pari, si può provare in questo modo:
// CSS file
#myTable tr:nth-child(even) { background-color: #363636; }
#myTable tr:nth-child(odd) { background-color: #efefef; }
No JS qui, semplicemente CSS, che è un bene dal momento che lo stile è una presentazione preoccupazione.
Tuttavia funziona solo in browser (relativamente) moderno: IE 9, Firefox 4+, Chrome ...
Prova for row, i in rows
, dove i
detiene il contatore del ciclo.