variable validar error check javascript jquery html-table

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