javascript - validar - No se puede leer la propiedad ''0'' de undefined en jquery
validar undefined jquery (1)
tab es una matriz. En esta matriz, tienes objetos.
Cannot read property ''0'' of undefined
significa que estás tratando de leer una propiedad de un objeto indefinido->
var foo={bar:"test"}
console.log(foo[bar]); //you get "test"
en tu caso:
var obj = tab[0] //obj is undefined
console.log(obj[0]); //you get "Cannot read property ''0'' of undefined"
Si desea verificar, puede verificar fácilmente cada objeto usando:
if(tab[0]){
//tab[0] is defined
if(tab[0][0])
{
//tab[0][0] is defined
}
}
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
td
{
min-height: 50px;
min-width: 50px;
}
</style>
</head>
<body>
<table border="1" id="tab">
<tr>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
</tr>
<tr>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
</tr>
<tr>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
</tr>
<tr>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
<td class="game"></td>
</tr>
</table>
<script>
var tab=[4];
$(document).ready(function()
{
var i,j;
for(i=0;i<4;i++)
{
tab[i]=[4];
for(j=0;j<4;j++)
{
tab[i][j]=null;
}
}
randomnum();
});
function randomnum()
{
var num=Math.random();
alert("called random num");
if(num<0.5)
num=2;
else
num=4;
alert(num);
var row=Math.floor(Math.random()*10);
row=row%4;
var col=Math.floor(Math.random()*10);
col=col%4;
while(tab[row][col]!=null)
{
var row=Math.random();
row=(row*10)%4;
var col=math.random();
col=(col*10)%4;
alert("random row col"+row+" "+col);
}
//alert("row:"+row+"col"+col);
tab[row][col]=num;
$("#tab tr:eq("+row+") td:eq("+col+")").text(num);
keycheck();
}
function keycheck()
{
$(document).on("keydown",function(event){
if(event.which==38)
moveup();
else if(event.which==40)
movedown();
else if(event.which==39)
moveright();
else if(event.which==37)
moveleft();
});
}
function moveup()
{
var row,col,j;
for(col=0;col<4;col++)
{
for(row=0;row<3;row++)
{
if(tab[row][col]==tab[row+1][col])
{
tab[row][col]=tab[row][col]*2;
row++;
tab[row][col]=null;
}
}
for(row=0;row<3;row++)
{
for(j=row+1;j<4;j++)
{
if (typeof j === "undefined") {
alert("j is undefined");
}
if (typeof row === "undefined") {
alert("col is undefined");
}
if (typeof col === "undefined") {
alert("col is undefined");
}
alert(j+" "+row+" "+col);
if(tab[j][col]==null&&tab[j+1][col]!=null)
{
tab[j][col]=tab[j+1][col];
tab[j+1][col]=null;
j++;
}
}
}
}
chntable();
}
function chntable()
{
var row,col;
for(row=0;row<4;row++)
{
for(col=0;col<4;col++)
{
$("#tab tr:eq("+row+") td:eq("+col+")").text(num);
}
}
randomnum();
}
</script>
</body>
</html>
en el código anterior, obtengo
Cannot read property ''0'' of undefined
en moveup()
en if(tab[j+1][col]==null&&tab[j][col]!=null)
. ¿Cuál es el error y cómo resolverlo? de los mensajes de alerta pude ver que ninguno está indefinido. Entonces, ¿qué está desencadenando el problema? Cuál es la causa del problema, entonces puedo evitarlo en el futuro. Lo que se da por duplicado es crear una matriz y no resolvió mi problema. el error en la biblioteca jquery en dispatch
y q.handle