gpt4 book ai didi

javascript - 无法读取 jquery 中未定义的属性 '0'

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:14 26 4
gpt4 key购买 nike

<!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>

在上面的代码中我得到了

Cannot read property '0' of undefined

if(tab[j+1][col]==null&&tab[j][col]!=null) 中的 moveup()。错误是什么以及如何解决?从警报消息中,我可以看到没有未定义的。那么是什么触发了这个问题?问题的原因是什么,所以我以后可以避免吗?一式两份给出的是创建数组,虽然没有解决我的问题。 jquery 库中的错误在 dispatchq.handle 处。

最佳答案

tab 是一个数组。在这个数组中你有对象。

Cannot read property '0' of undefined 表示您正在尝试读取 undefined object 的属性->

var foo={bar:"test"}
console.log(foo[bar]); //you get "test"

在你的情况下:

var obj = tab[0] //obj is undefined
console.log(obj[0]); //you get "Cannot read property '0' of undefined"

如果要检查,可以使用以下方法轻松检查每个对象:

if(tab[0]){
//tab[0] is defined
if(tab[0][0])
{
//tab[0][0] is defined
}
}

关于javascript - 无法读取 jquery 中未定义的属性 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com