Pełno rzeczy w globalnym scope – a nie powinno być nic.
clearDoneTable.addEventListener("click", function(){
for(let i = 0; i < doneRows.length; i++){
doneRows[i].remove();
}
doneRows.length = 0;
});
Wszystkie te handlery można uogólnić do jednej funkcji.
Nie lepiej wszystkie timery uaktualniać w jednym setInterval? Tak można bardzo łatwo zrobić na tyle dużo liczników, że całość padnie.