Похоже, вы перебираете текст, чтобы расшифровать символ за символом, но тогда ваша функция dec
ожидает три символа.Этого никогда не происходит, поэтому dec()
возвращает неопределенное значение.
Пример:
decrypt("36=") ->
dec("3") + dec("6") + dec("=") ->
undefined + undefined + undefined
undefinedundefinedundefined
Вы должны изменить функцию расшифровки, чтобы избежать этого.Кроме того, некоторые указатели:
- Вы не инициализируете
i
в своей функции шифрования / дешифрования - Нет необходимости в
break;
после return
в вашем случаеоператоры в качестве возврата завершат выполнение.
Редактировать: Вот пример с картой, так как некоторые другие ответы имели некоторые с циклами for.А также потому, что я подозревал, что это можно сделать одной строкой (и я был прав!)
<body>
<h3>Encrypt and Decrypt</h3>
<br><input placeholder="Ketikan sesuatu disini, pasti bisa:v" id="input2"><br>
<button onclick="decrypt()">Decrypt</button>
<div id="result"></div>
<script>
function decrypt(){
document.getElementById("result").innerHTML = document.getElementById("input2").value.match(/.{1,3}/g).map(dec).join('');
}
function dec(x){
switch(x){
case "+/=" :
return "A";
case "36=" :
return "B";
default:
return "?";
}
}
</script>
</body>