Hola Damian,
Tu problema era que estabas generando un bucle infinito en el while de la línea 18 ya que en caso de entrar en el primer if (línea 23) no incrementabas el contador.
Te dejo el código solucionado:
<meta charset="utf-8">
<input/>
<button> Verificar si acerto con el secreto </button>
<script>
function aleatorio(){
return Math.round(Math.random()*10);
}
function sortearNumeros (cantidad){
var secretos = [];
var contador = 1;
while (contador <= cantidad){
var numeroAleatorio = aleatorio();
console.log(numeroAleatorio)
var encontrado = false;
if (numeroAleatorio != 0) {
for (var posicion = 0; posicion < secretos.length; posicion++){
if (numeroAleatorio = secretos[posicion]) {
encontrado = true;
contador++;
break;
}
}
if (encontrado == false) {
secretos.push(numeroAleatorio);
contador++;
}
}
}
return secretos
}
var secretos = sortearNumeros (4);
console.log(secretos)
var input = document.querySelector("input");
input.focus();
function verificar() {
var encontrado = false;
for(var posicion = 0; posicion < secretos.length; posicion++){
if (parseInt(input.value) == secretos[posicion]) {
alert("Usted acertó");
encontrado = true;
break;
}
}
if (encontrado == false) {
alert("Uster erró")
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verificar;
</script>
Recuerda que siempre se debe incrementar antes del break, ya que al llegara esa instrucción el programa saldrá del bloque.
Saludos!