JavaScript - Me muestra undefined al validar un DNI

 
Vista:
sin imagen de perfil
Val: 26
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Me muestra undefined al validar un DNI

Publicado por Richard (16 intervenciones) el 07/11/2019 14:02:22
Hola quería que me ayudes con mi código cada ves que llamo a mi función para comprobar el dni y comprueba que es un dni valido me muestra undefined haber si me podéis ayudar o que estoy haciendo mal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function Persona(nombre, apellido, dni, email, telefono){
    this.nombre = nombre;
    this.apellido = apellido;
    this.dni = comprobarDNI(dni);
    this.email = email;
    this.telefono = telefono;
}
 
function Alumno(nombre, apellido, dni, email, telefono, sLaboral, edad, sexo){
    Persona.call(this, nombre, apellido, dni, email, telefono);
    this.sLaboral = sLaboral;
    this.edad = edad;
    this.sexo = sexo;
}
 
Alumno.prototype = new Persona();
 
function comprobarDNI(dni){
    dni = dni.toUpperCase();
 
    var numero = dni.substr(0, dni.length-1);
    var letr = dni.substr(dni.length-1, 1);
 
    var calculo = numero % 23;
 
    var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
 
    for (var i = 0; i < letras.length; i++) {
        if(!(letras[calculo] == letr)){
            alert("El DNI no es Valido");
            break;
        }
    }
}
 
var alumno = new Alumno("Usuario1","Apellido1","08275345Z","usuario@hotmail.com","611444111", "Estudiante", "18","hombre");
 
for(prop in alumno){
	document.write(alumno[prop]+" - ");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Me muestra undefined al validar un DNI

Publicado por joel (895 intervenciones) el 07/11/2019 16:13:09
Hola Richard, el problema que tienes, creo que es que la función comprobarDNI() no devuelve nada!!! simplemente muestra un alert() si no es correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 26
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Me muestra undefined al validar un DNI

Publicado por Richard (16 intervenciones) el 07/11/2019 21:50:58
Lo que pasa es que cada ves que comprueba el dni ve que esta mal y lo coge igualmente yo quiero que me lo vuelva a pedir para poder ponerlo pero eso no me lo hace

Este es mi codigo en html
1
2
3
4
5
6
7
<form action="" method="POST" id="formulario">
        <div id="resultado">
        </div>
        <input type="button" id="enviar" value="Enviar" onclick="validar()"/>
    </form>
 
    <div id="matriculados"></div>

Este es mi codigo en clases.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function Persona(nombre, apellido, dni, email, telefono){
    this.nombre = nombre;
    this.apellido = apellido;
    this.dni = comprobarDNI(dni);
    this.email = email;
    this.telefono = telefono;
}
 
function Alumno(nombre, apellido, dni, email, telefono, sLaboral, edad, sexo){
    Persona.call(this, nombre, apellido, dni, email, telefono);
    this.sLaboral = sLaboral;
    this.edad = edad;
    this.sexo = sexo;
}
 
Alumno.prototype = new Persona();
 
function comprobarDNI(dni){
    dni = dni.toUpperCase();
 
    var numero = dni.substr(0, dni.length-1);
    var letr = dni.substr(dni.length-1, 1);
 
    var calculo = numero % 23;
 
    var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
 
    for (var i = 0; i < letras.length; i++) {
        if(!(letras[calculo] == letr)){
            var error = alert("DNI NO VALIDO");
            return error;
        }else{
            return dni;
        }
    }
}

Y este es otro archivo alumno.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
function validar(){
	for (let x = 0; x < 2; x++) {
		var nombre = document.getElementsByName("nombre")[x].value;
		var apellido = document.getElementsByName("apellido")[x].value;
		var dni = document.getElementsByName("dni")[x].value;
		var email = document.getElementsByName("email")[x].value;
		var telefono = document.getElementsByName("telefono")[x].value;
		var sLaboral = document.getElementsByName("sLaboral")[x].value;
		var edad = document.getElementsByName("edad")[x].value;
		var sexo = document.getElementsByName("sexo")[x].value;
 
		if(!nombre){
			alert("Introduce tu Nombre");
		}else if(!apellido){
			alert("Introduce tu Apellido");
		}if(!dni){
			alert("Introduce tu DNI");
		}if(!email){
			alert("Introduce tu Email");
		}if(!telefono){
			alert("Introduce tu Telefono");
		}if(!sLaboral){
			alert("Introduce tu Situacion Laboral");
		}if(!edad){
			alert("Introduce tu Edad");
		}if(!sexo){
			alert("Introduce tu Sexo");
		}else{
			var alumno = new Alumno(nombre,apellido,dni,email,telefono,sLaboral,edad,sexo);
			mostrar(alumno);
		}
 
	}
}
 
function mostrar(alumno){
	for(prop in alumno){
		document.getElementById("matriculados").innerHTML+=alumno[prop]+" - ";
	}
	document.getElementById("matriculados").innerHTML+="<br>";
}
 
function crearTabla(){
	var tabla = "<table>";
 
		tabla+="<tr>";
			tabla+="<th>Nombre</th>";
			tabla+="<th>Apellido</th>";
			tabla+="<th>DNI</th>";
			tabla+="<th>Email</th>";
			tabla+="<th>Telefono</th>";
			tabla+="<th>Situacion Laboral</th>";
			tabla+="<th>Edad</th>";
			tabla+="<th>Sexo</th>";
		tabla+="</tr>";
 
		for (let x = 0; x < 1; x++) {
			tabla += "<tr>";
				tabla+="<td>"+"<input type=\"text\" name=\"nombre\">"+ "</td>";
				tabla+="<td>"+"<input type=\"text\" name=\"apellido\">"+ "</td>";
				tabla+="<td>"+"<input type=\"text\" name=\"dni\">"+ "</td>";
				tabla+="<td>"+"<input type=\"text\" name=\"email\">"+ "</td>";
				tabla+="<td>"+"<input type=\"number\" name=\"telefono\">"+ "</td>";
				tabla+="<td>"+"<input type=\"text\" name=\"sLaboral\">"+ "</td>";
				tabla+="<td>"+"<input type=\"number\" name=\"edad\">"+ "</td>";
				tabla+="<td>"+"<input type=\"text\" name=\"sexo\">"+ "</td>";
			tabla += "</tr>";
		}
 
	tabla+="</table>";
	document.getElementById("resultado").innerHTML=tabla;
}
 
window.onload = function(){
	this.crearTabla();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar