Dlaczego tak
Stan zaznaczenia pola checkbox odczytuje się z logicznej właściwości checked. Właściwość value zwraca wartość wysyłaną z formularza — przy braku atrybutu value jest to zawsze tekst "on", niezależnie od zaznaczenia, co jest częstą pułapką. Właściwość selected dotyczy elementów option listy select, a innerHTML pustego elementu input zwraca pusty tekst.