Написал простой код, искренне не понимаю почему он не работает. Подскажите пожалуйста.
Должно быть смещение на один символ, но почему то заполняет null. Заранее спасибо
( В блок кода вставить не могу, на телефоне не работает)
const input = document.querySelector('.input');
const resultScreen = document.querySelector('.result-text');
const symbols = ['А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я', ' ', '.', ','];
let string;
let counterString = 0;
let counterSymbols = 0;
input.addEventListener('change', () => {
string = input.value;
string = string.split('');
counterString = 0;
counterSymbols = 0;
encryption()
});
function encryption() {
for (counterString in string) {
for (counterSymbols in symbols) {
if (string[counterString] == symbols[counterSymbols]) {
string[counterString] = symbols[counterSymbols + 1];
}
counterSymbols++;
}
counterSymbols = 0;
counterString++;
}
console.log(string)
string = string.join('');
resultScreen.innerHTML = string;
}
JavaScript
Шифровальщик на js
Может я неправильно понял задачу или еще что, но если со смещением делать на основе существующего массива символов (что правда какая-то такая себе идея, когда существует charCode, но о предпочтениях не спорят)... то получается вот так, вполне работает.
const input = document.querySelector('.input');
const resultScreen = document.querySelector('.result-text');
const symbols = ['А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я', ' ', '.', ','];
const key = 2;
input.addEventListener('input', encryption);
input.addEventListener('blur', encryption);
function encryption({type}) {
const result = [];
const values = input.value.split('');
for (let letter of values) {
symbols.indexOf(letter) + key > symbols.length - 1 ?
result.push(symbols[symbols.indexOf(letter) - key]) :
result.push(symbols[symbols.indexOf(letter) + key]);
}
if (type === 'blur') resultScreen.textContent = result.join('');
}
В данном случае key - это уровень смещения, который сыграет роль как минимум при дешифровке... сама дешифровка выглядит аналогично. document.addEventListener('dblclick', decryption);
function decryption() {
const result = [];
const values = resultScreen.textContent.split('');
for (let letter of values) {
symbols.indexOf(letter) + key > symbols.length - 1 ?
result.push(symbols[symbols.indexOf(letter) + key]) :
result.push(symbols[symbols.indexOf(letter) - key]);
}
if (result) resultScreen.textContent = result.join('');
}
Твой же код мне кажется странным. Но, как я уже сказал, от задачи зависит.
Костя Кастерин
Спасибо большое, данное решение гораздо логичнее моего. Но я бы хотел узнать что именно я сделал не верно у себя, почему не работает. Повторять чужой код как по мне не имеет особо большой пользы, а если я доделаю свой до конца, уже смогу увидеть более четко проблемы кода и оптимизировать его... Буду признателен если объясните на моем примере
купи комп.
Костя Кастерин
Совет хороший, спору нет)
Похожие вопросы
- Шифровальщик текста на js
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
- вопрос по JS. " простой ()";
- Порядок изучени JavaScripta. Путь к Node.js. Нужен совет по обучению от программистов
- Почему иногда в вакансиях пишут "знания JavaScript или JQuery"? По сути JQuery - лишь библиотека для JS.