-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
64 lines (46 loc) · 1.82 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
const alfabeto = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
//para cada elemento HTML que queremos controlar
const inputOriginal = document.getElementById("input-original");
//va a ser el form entero
const cifrador = document.getElementById('cifrador');
//el mensaje ya encriptado
const resultado = document.getElementById('resultado');
//rango de valores
const rango = document.getElementById('rango');
const shifMessage = () => {
const wordArray = [...inputOriginal.value.toUpperCase()];
printChar(0, wordArray);
}
const printChar = (currentLetterIndex, wordArray) => {
if(wordArray.length === currentLetterIndex) return;
inputOriginal.value = inputOriginal.value.substring(1)
const spanChar = document.createElement("span");
resultado.appendChild(spanChar);
animateChar(spanChar)
.then( () => {
const charSinCodificar = wordArray[currentLetterIndex];
spanChar.innerHTML = alfabeto.includes(charSinCodificar) ?
alfabeto[(alfabeto.indexOf(charSinCodificar) + parseInt(rango.value)) % alfabeto.length] :
charSinCodificar
printChar(currentLetterIndex + 1, wordArray);
});
}
const animateChar = spanChar => { //animacion de los caracteres
let cambiosDeLetra = 0;
return new Promise(resolve => {
const intervalo = setInterval(() => {
spanChar.innerHTML = alfabeto[Math.floor(Math.random() * alfabeto.length)];
cambiosDeLetra++;
if(cambiosDeLetra === 3) {
clearInterval(intervalo);
resolve();
}
}, 75);
});
}
const submit = e => {
e.preventDefault();
resultado.innerHTML = '';
shifMessage();
}
cifrador.onsubmit = submit;