Ok, esto parece bastante básico, pero estoy atascado.
Estoy configurando un var fuera del ciclo, luego lo incremento y una vez que el contador alcanza un umbral, necesito restablecerlo a 0.
var cnt = 0; $("ul").each(function(cnt) { var ths = $(this), tul = ths.attr("id"); cnt = cnt++; if (cnt == 20) { cnt = 0; } ... });Por alguna razón, sigue aumentando hasta el final del look. ¿Qué me estoy perdiendo?
Si no se puede restablecer a 0 porque cnt es el argumento de índice de la función .each(function(cnt) { , y siempre será el índice de iteración. Está intentando restablecer algo a 0, que en el siguiente ciclo volverá a ser el índice entero .
Dependiendo de cuál sea el deseado (no está claro en su pregunta hasta ahora), simplemente no podría usar el atributo de índice :
let cnt = 0; $("ul").each(function() { cnt += 1; if (cnt === 20) { cnt = 0; } // ... }); Use el operador de recordatorio % para regresar a 0 una vez que idx se convierta en 20.
En ese caso, no necesita la variable externa, pero puede usar el atributo de índice de iteración en su lugar:
$("ul").each(function(idx) { const cnt = idx % 20; // Reset to 0 once idx is 20 // ... });El primer argumento de la función es el índice de la matriz. Consulte la documentación de jQuery. https://api.jquery.com/each/
No es necesario pasar el parámetro a la función. Vea el código a continuación.
var cnt = 0; $("ul").each(function() { cnt++; if (cnt == 20) { cnt = 0; } });