Buenas comunidad espero que me echeis una mano, estoy estudiando un modulo de javascript y tengo que hacer un ejercicio,esta casi acabado pero me queda el final , la historia es que tengo un campo de fútbol con gradas y espectadores, el problema lo tengo con la función agregar gradaYasiento, tengo que pasarle por parámetros las gradas que quiero añadir y los asientos que tiene cada grada. Luego tengo otra función que es añadir el socio que tengo que pasar por parámetros el nombre del socio, la grada y asiento que le corresponde,
Tal como lo tengo el problema es que cuando quiero añadir gradaYasiento me machaca el array donde lo guardo. Sera problema de la declaración del mismo.
<!DOCTYPE html>
<html>
</head>
<title></title>
</head>
<body>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
var i=0;//variable global indice del array gradas
var j=0;
//funcion constructor
function CampoFutbol(nombre,ciudad,capacidad){
this.nombre=nombre;
this.ciudad=ciudad;
this.capacidad=capacidad;
//array donde almacenamos gradas,asientos y nombre
this.gradas= Array();
//variables para modificar nombre,ciudad y capacidad campo futbol
this.nuevoNombre="";
this.nuevaCiudad="";
this.nuevaCapacidad=0;
//variables imprimir nombre,ciudad y capacidad campo futbol
this.imprimeNombre=nombre;
this.imprimeCiudad=ciudad;
this.imprimeCapacidad=capacidad;
//funcion agregar gradas y asientos
this.agregarGradasYAsisentos=this.gradas;
//funcion agregar socio
this.agregarSocio=agregarSocio;
//funcion imprimir
this.imprimirSocio=imprimirSocio;
//metodo modificar nombre
this.nuevoNombre=function(nombre)
{
this.nombre=nombre;
}
//metodo modificar cidudad
this.nuevaCiudad=function(ciudad)
{
this.ciudad=ciudad;
}
//metodo modificar capacidad
this.nuevaCapacidad=function(capacidad)
{
this.capacidad=capacidad;
}
//funcion imprimir nombre
this.imprimeNombre = function(){
return this.nombre;
}
//funcion imprimir ciudad
this.imprimeCiudad= function(){
return this.ciudad;
}
//funcion imprimir capacidad
this.imprimeCapacidad=function(){
return this.capacidad;
}
this.agregarGradasYAsisentos=function(grada,asient o)
{
var pos = this.gradas.length + grada;
grada = pos;
this.gradas = Array(grada);
for ( grada =0; grada < this.gradas.length; grada++) {
var asientos = Array(asiento);
this.gradas[grada]=asientos;
document.write("<br>");
for ( asiento = 0; asiento < this.gradas[grada].length; asiento++) {
this.gradas[grada][asiento]="vacio";
document.write(this.gradas[grada][asiento] + "<br>");
};
};
document.write("<br>");
return this.gradas;
}
/*
this.numGradas = numGradas;
this.numAsientos = numAsientos;
this.gradas = new Array(numAsientos);
for (var i=0; i < numGradas; i++) {
this.gradas[i]=new Array(this.numAsientos);
}
*/
}
//funcion agregar socio
function agregarSocio(numGrada,numAsiento,socio)
{
this.gradas[numGrada][numAsiento]=socio;
document.write(socio + " es ahora socio del asiento " + numAsiento + " de la grada " + (numGrada + 1) + "<br><br>");
}
//imprimir socios
function imprimirSocio()
{
//var posI = this.gradas.length;
//var posJ =this.gradas.length;
for (var i = 0; i < this.gradas.length; i++) {
for (var j = 0; j < this.gradas[i].length; j++) {
document.write("Socio del asiento " + j + " de la grada " + i + " : " + this.gradas[i][j] + "<br>");
}
};
}
//instanciamos un campo de futbol
var campo1 = new CampoFutbol("Los Carmenes","Granada",22524);
var campo2 = new CampoFutbol("La Rosaleda","Almeria",30044);
var campo3 = new CampoFutbol("Benito Villamarin","Sevilla",56000);
//modificamos nombre campo1
campo1.nuevoNombre("Nuevo Estadio Los Carmenes");
//modificamos la ciudad del campo 2
campo2.nuevaCiudad("Malaga");
//modificamos la capacidad del campo3
campo3.nuevaCapacidad(56500);
//imprimimos nombre campo1
document.write("El campo1 se llama " + campo1.imprimeNombre() + "<br>");
//imprimimos la ciudad del campo2
document.write("El campo2 se encuentra en " +campo2.imprimeCiudad() + "<br>");
//imprimimos la capacidad del campo3
document.write("El campo3 tiene un aforo de " + campo3.imprimeCapacidad() + " espectadores" + "<br>");
//agregamos 2 gradas con 4 asientos por grada al campo1
document.write("agregamos dos gradas y cuatro asientos por grada <br>");
campo1.agregarGradasYAsisentos(2,4);
//agregamos 4 socios al campo1
campo1.agregarSocio(0,0,"Juan Soria");
campo1.agregarSocio(0,1,"Pablo Ruiz");
campo1.agregarSocio(0,2,"Jose Perez");
campo1.agregarSocio(1,1,"Antonio Alvarez");
//imprimimos los socios del campo1
document.write("imprimimos los socios <br>");
campo1.imprimirSocio();
//agregamos 1 gradas con 3 asientos por grada al campo1
document.write("agregamos 1 grada y tres asientos por grada <br>");
campo1.agregarGradasYAsisentos(1,3);
//agregamos 1 socio mas al campo1 del asiento 2 de la grada 3
campo1.agregarSocio(1,1,"Javier Navarro");
document.write("imprimimos los socios <br><br>");
campo1.imprimirSocio();
document.write(campo1.gradas.length);
</script>
</body>
</html>