@uroot

Как правильно написать повторяющийся код?

Есть простенькая реализация Шифра Цезаря:
Как написать повторяющийся код так, чтобы его было как можно меньше? Как бы вы это сделали? Без использования jQuery!
  • Вопрос задан
  • 375 просмотров
Решения вопроса 3
orlov0562
@orlov0562
I'm cool!
я бы вынес в отдельный класс или объект функции и использовал их, типа того
let Caesar = {
  encrypt: function(str){... return out;},
  decrypt: function(str){... return out;}
}

document.getElementById('in__сaesar').oninput = function() {
    document.getElementById('out__caesar').innerHTML = Caesar.encrypt(this.value);
}
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
const caesar = (str, offset) => Array
  .from(str, n => String.fromCharCode(n.charCodeAt(0) + offset))
  .join('');

const caesarTemplate = (title, offset) => `
  <div class="caesar">
    <textarea class="caesar-input" data-offset="${offset}"></textarea>
    <hr>
    <p>${title}: <span class="caesar-output"></span></p>
  </div>
`;

document.addEventListener('input', ({ target: t }) => {
  if (t.matches('.caesar-input')) {
    const output = t.closest('.caesar').querySelector('.caesar-output');
    output.innerHTML = caesar(t.value, +t.dataset.offset);
  }
});

document.body.insertAdjacentHTML('beforeend', [
  [        'Шифр',  3 ],
  [ 'Расшифровка', -3 ],
].map(n => caesarTemplate(...n)).join(''));
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
Можно создать билдер и передавать нужные параметры.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы