В бэм сказано, что модификатор не может задавать позиционирование.
margin и прочие вещи, которые влияют на окружение, нельзя задавать для блока и модификатора блока, но можно задавать для элемента и модификатора элемента.block--margin20, на который вы сослались, считаю ошибочным. headerImages нет свойства isArray. Оно есть у Array: Array.isArray(...).Array.isArray(headerImages) всегда даст false, потому что document.querySelectorAll возвращает NodeList, а не массив.NodeList на пустоту — проверяйте длину: headerImages.length !== 0 ? ....headerImages нет свойства findIndex, потому что это свойство массивов, а не NodeList.NodeList в массив можно так: Array.from(headerImages). <input type="hidden" id="clientID" name="ClientID" value="">document.getElementById('clientID').value = clientID; input находится строка. Нужно перед выполнением арифметических операций преобразовать её в число:var input = Number(document.getElementsByClassName('inputer').value);input перенести ниже самого элемента в коде. Сейчас у вас скрипт подключается раньше, чем в DOM-дереве появится элемент input.