[英]Seemingly random TypeError in JavaScript
目前,我正在開發一個可以在網站上運行的小型迷你游戲,但我很早就設法遇到了一個相當奇怪的 TypeError。 這是我目前正在使用的代碼:
level0 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
let character = {
x: 0,
y: 0,
}
function setBoard(array2d) {
let i;
let m = 0;
for(i = 0; i < (array2d.length * 10); i++) {
if (m == 6) {
break;
};
let z = document.getElementById(`${String(m)}-${i}`).classList;
// let z1 = `${m}-${i} is ${z}`;
// console.log(z1);
if (z == "noselect wall") {
array2d[m][i] = 1;
} else if (z == "noselect gameboard character") {
array2d[m][i] = 2;
character.x = i;
character.y = m;
document.getElementById(`${String(m)}-${i}`).innerHTML = "YOU";
} else if (z == "noselect gameboard goal") {
array2d[m][i] = 3;
document.getElementById(`${String(m)}-${i}`).innerHTML = "GOAL";
}
if (i == 9) {
m++;
i = -1
}
}
}
setBoard(level0);
console.log(character);
console.log(level0[character.x + 1][character.y]);
function moveRight(array2d) {
if (array2d[character.x + 1][character.y] == 0) {
character.x++;
console.log(character);
}
}
錯誤如下: Uncaught TypeError: Cannot read property '3' of undefined at script.js:43
我檢查了屬性是否存儲為數字,並且它們似乎記錄為數字。 我還確保這嚴格來說是一個 JavaScript 問題,因為在整個過程中,沒有 HTML 似乎在任何時候都無法正常運行。 有什么我想念的嗎? 任何幫助將不勝感激!
如您所見,索引 m 代表外部索引,i 代表內部
array2d[m][i] = 2; character.x = i; character.y = m;
但是,此 console.log 語句使用 i(character.x) 作為外部,將超過 6 以使其未定義
console.log(level0[character.x + 1][character.y]);
那么 undefined[m] 將是未捕獲的類型錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.