Básicamente, estoy tratando de crear un perfil de estudiante basado en los datos de los estudiantes almacenados en matrices de JavaScript. después de iniciar sesión con éxito, quiero mostrar el nombre de usuario (que inició sesión) en la página html del estudiante llamada s1.html, creé una función llamada stu_verfiy cuando obtengo el valor de entrada y lo almaceno en la variable y los uso para hacer coincidir con el elemento de matriz para autenticación de inicio de sesión, luego trato de rastrear el nombre y la contraseña del estudiante del índice en una matriz para que lo use para mostrar el nombre del estudiante en el archivo html, no funciona
const students_names = [ "moiz", "John", "Adam", "Walter", "Jesse", "Charlie" ]; const students_ids = [ "Johnnyboy15", "Adaman42", "Wally63", "Jessthemesh74", "Charles05" ]; const students_passwords = [ "moiz", "jo63@greenvalleytechschool", "Ada14@greenvalleytechschool", "Walt002@greenvalleytechschool", "jesh11@greenvalleytechschool", "char227@greenvalleytechschool" ]; var x ; function verify_stu() { var stu_name = document.getElementById('stu_name').value; var stu_password = document.getElementById('stu_pass').value; for( x = 0 ; x <= students_names.length ; x++) { if(students_names[x] == stu_name && students_passwords[x] == stu_password) { document.getElementById('stu_namedd').innerHTML = students_names[x]; window.location.href='/views/s1.html'; break; } else { alert('unsuccessfull') break; } } }incluso trato de devolver este valor fuera de la función, me muestra indefinido, ¿alguien puede ayudarme en esto y guiarme de una mejor manera para realizar esta tarea? El inicio de sesión funciona perfectamente pero no puedo obtener los datos del usuario que inició sesión. en la actualidad
<div id="third_container"> <label id="stu_name_x">Name</label> <label id="stu_namedd" ></label> </div>Si entiendo bien, tiene datos para estudiantes (nombre de usuario, contraseña, id) y también tiene dos campos de entrada, uno para ingresar un nombre de usuario y otro para una contraseña. Con el clic de un botón, desea verificar si hay un estudiante en función de los datos ingresados en los campos de entrada. Si lo hay, se transferirá a s1.html donde desea que aparezca el nombre del estudiante. De lo contrario, se mostrará un mensaje de alerta ('sin éxito').
Si lo que dije es lo que quieres hacer, entonces veo 2 problemas en tu código.
Su ciclo for es este: for( x = 0; x <= students_names.length; x++) . Con la que has hecho se intenta acceder a la mesa en una posición +1 de las que tiene. La solución es escribir for( x = 0; x <= students_names.length - 1; x++) o for( x = 0; x < students_names.length; x++) para que esté dentro del tamaño de la tabla.
También de la forma en que lo hiciste, el mensaje de alerta ('sin éxito') aparecerá directamente si los datos ingresados no coinciden con las primeras posiciones de las tablas. Esto quiere decir que te aparecerá esta alerta sin haber verificado las credenciales con todo lo que tienes guardado en las tablas de cada alumno.
Una solución rápida para esto sería hacer lo siguiente:
var x; function verify_stu() { var stu_name = document.getElementById("stu_name").value; var stu_password = document.getElementById("stu_pass").value; for (x = 0; x <= students_names.length - 1; x++) { if (students_names[x] == stu_name && students_passwords[x] == stu_password) { document.getElementById("stu_namedd").innerHTML = students_names[x]; window.location.href = "/views/s1.html"; break; } } if (x === students_names.length) { alert("unsuccessfull"); } }Espero haber ayudado :)
Puede lograr esto usando localStorage (al menos para el nombre de usuario, ya que no recomendaría guardar la contraseña). El usuario inicia sesión, y lo guarda en localStorage con la clave "usuario", de esa manera obtendrá la misma clave cada vez, pero quien haya iniciado sesión localmente se mostrará su nombre de usuario. Entonces, después de verificar que usaron el nombre de usuario / contraseña correctos, configurará localStorage y lo tomará
Por ejemplo:
localStorage.setItem("user", stu_name) //Then grab it localStorage.getItem("user")