Если вы используете идентификатор один раз, возвращаемое значение document.orderform.checkId.length даст вам количество свойств этого объекта, потому что document.orderform.checkId будет этим единственным объектом.
В вашем цикле вы пройдете через все эти свойства и спросите их об их свойстве «проверено». Поскольку они не обладают этим свойством, вы получите ошибки, и ваш скрипт потерпит неудачу.
Если идентификатор используется более одного раза, document.orderform.checkId станет массивом всех объектов с таким идентификатором, а длина вернет вам их количество.
В этом случае ваш цикл пройдет через все флажки, как вы и планировали.
Лучшим решением было бы использовать document.getElementsByName ('checkId') или добавить скрытый фиктивный флажок, который будет игнорироваться при запуске цикла с i = 1 вместо i = 0;
Поскольку идентификаторы должны быть уникальными, я бы порекомендовал изменить ваши скрипты на использование атрибута name и использовать document.getElementsByName ('checkId'), который всегда будет возвращать массив.