Ode mnie następujące uwagi:
- zamiast w każdej funkcji pisać 'use strict'; zamknij całość w IIFE i daj na górze 'use strict'. Oprócz wyeliminowania powtarzalności, unikniesz tworzenia funkcji w globalnej przestrzeni
- deklaruj funkcje w takiej kolejności, aby wywołanie było poniżej miejsca utworzenia funkcji. Pisząc funkcje w formie function statement JavaScript unosi je do góry. Sprawia to, że wywołując daną funkcję powyżej miejsca jej utworzenia będzie ok. Natomiast, jeśli zapiszesz daną funkcję w formie function expression i będziesz chciał ją wywołać zanim ją stworzysz (z przyzwyczajenia) to wystąpi w konsoli błąd. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/function#Function_declaration_hoisting
- staraj się unikać stylowania przez JavaScript => element.style. Zamiast tego dodawaj/usuwaj klasy zapisane w CSS
- zamiast:
calculate.addEventListener("click", function () { validate();}, false);
, wystarczy:
calculate.addEventListener("click", validate);
Atrybut false jest wstawiany domyślnie. Natomiast do EventListenera możesz podać już gotową funkcję. Chyba, że chcesz obsłużyć kilka funkcji i przesłać dodatkowe argumenty, wtedy Twój zapis będzie ok. Tzn., teraz jest ok, ale można go skrócić :)