Основная проблема в том, что ваше добавление в output += ...
выполняет конкатенацию строк, а не числовое добавление, потому что orgshf
является строкой. Просто замените:
var orgshf = shfBox.value;
с
var orgshf = +shfBox.value;
И он мгновенно работает намного лучше, потому что оператор +
здесь преобразует значения в числа.
(Вы также можете сделать:
var orgshf = Number(shfBox.value);
Это в точности то же самое, что и выше, и многие предпочитают его, потому что оно более явное. Как я уже сказал, оба делают одно и то же, и все сводится к личным предпочтениям - сделайте свой выбор.)
Это все еще не идеально, поскольку иногда ваши коды символов дают вам не алфавитные символы. Вам также необходимо изменить диапазоны в операторах if
, чтобы они зависели от orgshf
. Но я надеюсь, что этого достаточно, чтобы вы могли это исправить, потому что основная проблема заключалась в том, что вы не добавляли цифры так, как думали.