Perché i seguenti funzionano correttamente in Firefox ma NON in Chrome? Se cambio il valore restituito nel ciclo .each su "true", funziona in Chrome e non in Firefox. Cosa dà?
(Quando non funziona, restituisce solo in pochi secondi contro il giorno corretto, ora, ecc.)
function time_remaining(expire_time)
{
var now = new Date().getTime()/1000,
time_left = expire_time - now,
time_left_str = '0 seconds';
if (time_left < 1) {
return time_left_str;
}
var a = {};
a[ 12 * 30 * 24 * 60 * 60 ] = 'year',
a[ 30 * 24 * 60 * 60 ] = 'month',
a[ 24 * 60 * 60 ] = 'day',
a[ 60 * 60 ] = 'hour',
a[ 60 ] = 'minute',
a[ 1 ] = 'second';
$.each(a, function (secs, str) {
var d = time_left/secs;
if (d >= 1) {
var r = Math.round(d);
time_left_str = r + ' ' + str + ((r > 1) ? 's' : '');
return false;
}
});
return time_left_str;
}
Secondo la documentazione 'Siamo in grado di interrompere il ciclo $ .each() in una particolare iterazione rendendo la funzione di callback restituita falsa. Il ritorno non-falso è lo stesso di un'istruzione continue in un ciclo for; salterà immediatamente alla successiva iterazione. – MrOBrian
Prova a usare return (fasle) come callback alla tua funzione .. Questo dovrebbe risolvere il tuo problema in quanto agirà come una pausa; –
Ho provato sia "return false" che "return (false)". Questo funziona correttamente su Firefox. Tuttavia, NON funziona correttamente su Chrome. Chrome funziona correttamente solo quando uso "return true". Non sono sicuro? –