Saludos,
En el código de Pablo estuvo bien anidar otro if dentro del else para incluir 2 condiciones:
Si if es vedadero:
if (contador == 3) {
alert("Agotaste el número permitido de intentos!");
}
Si if es falso entrar al else y mostrar el mensaje intentar de nuevo y repetir el ingreso de datos de nuevo:
else {
alert("inicio de sesión inválido. Por favor intente de nuevo");
}
Pero en el caso de Jesús se crea un loop infinito porque le falta el incrementador contador++, entonces el valor de contador siempre es 1, te adjunto 2 posibles soluciones:
Anidar dentro de un else como hizo Pablo incluyendo el contador++
var intento = 3;
var contador = 1;
while(contador <= intento) {
var inicioDeSesionIngresado = prompt("Ingrese su usuario");
var contrasenhaIngresada = prompt("Ingrese su contraseña");
if (inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada) {
alert("Bienvenido al sistema " + inicioDeSesionIngresado);
break;
}
else {
if (contador == 3) {
alert("Agotaste el número permitido de intentos!");
}
else {
alert("inicio de sesión inválido. Por favor intente de nuevo");
}
}
contador++
}
</script>
O como yo que cree un if (contador == 4) por fuera del While para avisar con un alert("Ha alcanzado el máximo de intentos"); y siempre debe haber un contador++ antes de cerrar el While para contar las repeticiones:
var intentos = 3;
var contador = 1;
var inicioDeSesionRegistrado = "alura";
var contrasenhaRegistrada = "alura321";
while(contador <= intentos) {
var inicioDeSesionIngresado = prompt("Ingrese su usuario");
var contrasenhaIngresada = prompt("Ingrese su contraseña");
if( inicioDeSesionRegistrado == inicioDeSesionIngresado && contrasenhaRegistrada == contrasenhaIngresada ) {
alert("Bienvenido al sistema " + inicioDeSesionIngresado);
break;
}
else {
alert("inicio de sesión inválido. Favor intente de nuevo");
}
contador++;
}
if (contador == 4) {
alert("Ha alcanzado el máximo de intentos");
}
imprimir("Fin");
</script>