Un novato de Javascript aquí.
Estaba tratando de hacer este programa simple donde la página web mostrará la fuerza bruta de cualquier palabra que ingrese, en cada iteración. Por ahora, lo he limitado a console.log() . El código es algo como esto:
document.getElementById("intro").onclick = function(){ alphabets = "abcdefghijklmnoqrstuvwxyz"; text = alphabets[0]; word = "foobar"; i=0; j=0; for(i=0; i<word.length; i++){ while(text.charAt(text.length - 1)!=word[i]){ j++; text = text.substring(0, text.length - 1); text+=alphabets[j]; //document.getElementById("word") = text; } console.log("found a matching letter!"); j=0; } } Nota: si ha pasado por el ciclo while , simplemente ignore el hecho de que una vez que encuentra una palabra coincidente para el primer carácter, no pasará al siguiente, ya que la longitud (del text ) terminará siendo constante.
Cada vez que se ejecuta este código, simplemente entra en un estado de ciclo while infinito y hace que la página no responda por completo. console.log(text) y da un resultado como este:
Observe cómo no console.log() el carácter p . Por lo tanto, esperaría que saliera del bucle while esa vez e imprimiera el código fuera del bucle while ( console.log("found a matching letter!"); y j=0; ). Pero, en la imagen de arriba, como puede ver, no se imprime. Luego console.log(j) solo para encontrar que se imprime continuamente en un ciclo infinito mientras se incrementa.
Sinceramente, no sé qué está pasando o me estoy perdiendo algo muy obvio. Cualquier ayuda es apreciada. ¡Gracias!