Come detto in qualche risposta precedente, debuggare questo codice è un lavoro immane, tra poca leggibilità causa allineamenti sbagliati, nomi di variabili poco significativi (dbGuardie, guardia, guardie, x, y, z, …) e quando si raggiunge un minimo di risultato, il codice viene di nuovo stravolto, non nella logica bensì nell'architettura (il salvataggio e caricamento su Local Storage di tutte le guardie andava bene, perché cambiarlo?), tuttavia i difetti più grossi e quelli segnalati più volte non vengono mai risolti, e si riparte sempre da zero scrutando un codice nel tentativo di capire quello che fa, e dove la soluzione sarebbe quella di fornire una implementazione finale funzionante (visto che molti suggerimenti vengono puntualmente disattesi).
Per capire cosa non va basterebbe debuggare il codice e vedere i valori che assumono le variabili di volta in volta, e questo sarebbe sufficiente a capire come mai entra - o non entra in un if(), perché un ciclo si ripete, cosa viene caricato, cosa viene salvato.
Il codice è costellato di “stampe di prova” che ne limitano estremamente la leggibilità e impediscono di capire cosa fa, complice anche i nomi poco significativi delle variabili come predetto, con una mescolanza peraltro di valori interi, pezzi di HTML, e tante altre informazioni che risultano mancanti oppure omesse (ad esempio, dov'è la dichiarazione di “guardie”?).
Io alzo le mani, perché siamo alla ennesima pagina di discussione sullo stesso problema e si continua a ripetere gli stessi errori, o a introdurne di nuovi laddove (finalmente) il codice stava funzionando (anche se parzialmente), quindi non vedo una via di uscita o comunque non vedo l'investimento di tempo proficuo per aiutare, perché non c'è un metodo rigoroso e puntuale nella verifica delle problematiche e nella loro risoluzione, ma un procedere continuo a tentoni che talvolta smonta pure quel poco di buono che viene fatto.
Sorry…