Hola muy buenas a todos y gracias de antemano por interesaros en este tema. Estoy haciendo un ejercicio en el que tengo que crear una tabla de forma dinámica pidiendo el número de filas y número de columnas, además tengo que pedir un valor para cada celda a través del prompt. Quiero guardad esos valores en un array bidimensional que quede como en la tabla y lo que hago es a la hora de introducir el valor en la tabla lo introduzco también en el array. El problema viene cuando pido mas de una fila, si pido dos filas y dos columnas, que debería pedir 4 valores, me pide 3 valores y cuando quiero mostrar los valores me muestra 2 además no me muestra la tabla en la página. Si comento la parte en la que guardo el valor en el array no pasa nada de esto.
Por cierto, si uso herramientas para desarrolladores en Google Chrome me sale el error "cannot set property '0' of undefined" justo debajo de la parte en la que guardo el valor en el array.
Espero haberme explicado lo mejor posible y muchas gracias de antemano. Un saludo a todos ;)
Código Javascript
:
Ver original<html>
<head>
<script style="text/javascript">
var fila;
var columna;
var numero;
var arrayTabla= new Array(numf);
var numf; //numero filas
var numc; //numero columnas
function generar(){
//cojo los datos del id que solicito
fila=document.getElementById('filas');
//paso el dato a entero
numf=parseInt(fila.value);
columna=document.getElementById('columnas');
numc=parseInt(columna.value);
//creo el array bidimensional para guardar los datos de la tabla tal y como está en ésta
for (i=0;i<arrayTabla.length;i++) arrayTabla[i]= new Array(numc);
//creo la tabla
tabla=document.createElement("table");
tabla.border=1;
tabla.id="t";// añado id a la tabla
//creamos las celdas de la tabla e introducimos los datos en la celda y en el array bidimensional
for (var i=0;i<numf;i++){
//recorremos el array de filas creándolas con tr
var fila1=document.createElement("tr");
//lo mismo con td
for (var j=0;j<numc;j++){
//lo mismo con td
var columna1=document.createElement("td");//creamos una celda
numero=prompt("Intro valor: ");
arrayTabla[i][j]=numero; //introduzco el valor en el array
//creo un texto para dentro de cada td y le pongo el valor de número
var texto=document.createTextNode(numero);
columna1.appendChild(texto);//enlazamos hijos con padres
fila1.appendChild(columna1);
}
tabla.appendChild(fila1);
}
bodyP.appendChild(tabla);
}
function mostrar(){ //funcion para mostrar los valores de cada celda
for(i=0;i<arrayTabla.length;i++){
for (j=0;j<arrayTabla[i].length;j++){
alert("valor celda: "+arrayTabla[i][j]);
}
}
}
</script>
</head>
<body id="bodyP">
Filas<input type="text" id="filas" value=""></br>
Columnas<input type="text" id="columnas" value=""></br>
<input type="Button" value="generar" onclick="generar()">
<input type="Button" value="mostrar" onclick="mostrar()"> </br>
</body>