I'm making an application with Electon js that needs to validate a determinist finite automaton and then show the process with a diagram and status.
In order to show the changes from one status to another in the diagram I have 5 images, one with each status highlighted and am using this function:
function animarDiagrama(){
            document.getElementById("blanco").style.display = "none";
            document.getElementById("q1").style.display = "block";
            var cadenaLength = cadena.length;
            var estado = "q1";
            for (var i = 0; i < cadenaLength; i++){
                var j = i + 1;
                        if (estado == 'q1'){
                            if(cadena.substring(i,j) == 'a'){
                                estado = 'q2';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "block";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "none";
                            }else if (cadena.substring(i,j) == 'b'){
                                estado = 'q3';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "block";
                                document.getElementById("q4").style.display = "none";
                            }
                        }else if (estado == 'q2'){
                            if(cadena.substring(i,j) == 'a'){
                                estado = 'q4';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "block";
                            }else if (cadena.substring(i,j) == 'b'){
                                estado = 'q3';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "block";
                                document.getElementById("q4").style.display = "none";
                            }
                        }else if (estado == 'q3'){
                            if(cadena.substring(i,j) == 'a'){
                                estado = 'q2';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "block";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "none";
                            }else if (cadena.substring(i,j) == 'b'){
                                estado = 'q4';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "block";
                            }
                        }else if (estado == 'q4'){
                            if(cadena.substring(i,j) == 'a'){
                                estado = 'q4';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "block";
                            }else if (cadena.substring(i,j) == 'b'){
                                estado = 'q4';
                                document.getElementById("blanco").style.display = "none";
                                document.getElementById("q1").style.display = "none";
                                document.getElementById("q2").style.display = "none";
                                document.getElementById("q3").style.display = "none";
                                document.getElementById("q4").style.display = "block";
                            }
                        }
            }
        }
The function is called via a button but the problem is that when it is called I can only see the last status as it is made immediatly.
Is there any way to make the images change slowly?
Here's the HTML:
<p>La cadena: </p>  <ul></ul>   <p> es válida. </p>
<p>Diagrama:</p>
<button type="submit" onclick="animarDiagrama();">Ver movimiento en diagrama</button>
<!-- Contenedor del diagrama -->
<img src="images/blanco.png" alt="Diagrama en Blanco" id="blanco" style="display: block;">
<img src="images/q1.png" alt="Estado Q1" id="q1" style="display: none;">
<img src="images/q2.png" alt="Estado Q2" id="q2" style="display: none;">
<img src="images/q3.png" alt="Estado Q3" id="q3" style="display: none;">
<img src="images/q4.png" alt="Estado Q4" id="q4" style="display: none;">
Edit: this is the function that validates the data entered by user in my main window:
function validarCadena(){
        //Obtener cadena
        cadenaValue = document.getElementById("cadena").value;
        //Guardar cadena como String
        cadenaString = String(cadenaValue);
        //Obtener longitud de la cadena para ciclo
        cadenaLength = cadenaString.length;
        valid = false; //Var para validez de la cadena
        //If cadena vacia
        if(cadenaLength == 0){
            valid = true;
        }else{
            //If cadena no vacia
            for (var i = 0; i < cadenaLength; i++){
                //Variables para metodo substring(j,k) <- obtiene un
                //substring desde j (incluido) hasta k (no incluido)
                var j = i+1;
                var k = j+1;
                //if cadena de un solo caracter
                if (cadenaLength == 1){
                    //a o b son validas, otra cosa no
                    if (cadenaString.substring(0,1) == 'a' || 
                    cadenaString.substring(0,1) == 'b'){
                        valid = true;
                    }else {
                        valid = false;
                    }
                }else {
                    //cadenas de mas de un caracter
                    if(cadenaString.substring(i,j) == 'a'){
                        if(cadenaString.substring(j,k) == 'b' || 
                        cadenaString.substring(j,k) == ''){
                        valid = true;
                        }else {
                        valid = false;
                        break;
                        }
                    }else if (cadenaString.substring(i,j) == 'b'){
                        if(cadenaString.substring(j,k) == 'a' ||
                        cadenaString.substring(j,k) == ''){
                            valid = true;
                        } else {
                            valid = false;
                            break;
                        }
                    }else {
                        valid = false;
                    }
                }
            }
        }
        //Enviar cadena a main.js
        const item = document.querySelector('#cadena').value;
        ipcRenderer.send('item:add', item, valid);
    }
And here's how that is handled:
ipcMain.on('item:add', function(e, item, item2){
cadena = item;
valid = item2;
if(valid == true){
    createValidWindow();
}else if (valid == false){
    createInvalidWindow();
}
enviarCadena(cadena);
});
 
    