javascript - 错误 Javascript:未捕获的类型错误:无法读取未定义的属性“0”
问题描述
当我运行它时,它说
未捕获的类型错误:无法读取未定义的属性“0”。
我不知道如何解决这个问题。
帆布:<canvas id="c" style="background-color: black;">
var c = document.getElementById('c');
var ctx = c.getContext('2d');
c.width = window.innerWidth;
c.height = window.innerHeight;
var grid = [];
for (var j = 0; j < c.height; j++) {
grid.push([]);
for (var i = 0; i < c.width; i++) {
grid[j].push(0);
}
}
function draw() {
ctx.clearRect(0, 0, c.width, c.height);
for (var j = 0; j < grid.length; j++) {
for (var i = 0; i < grid[0].length; i++) {
ctx.fillStyle = (grid[i][j] == 0) ? 'red' : 'blue';
ctx.fillRect(i, j, 1, 1);
}
}
}
//setInterval(draw, 10);
draw();
<canvas id="c" style="background-color: black;">
解决方案
您应该grid.length
在grid[0].length
内部 for 循环中添加。
var c = document.getElementById('c');
var ctx = c.getContext('2d');
c.width = window.innerWidth;
c.height = window.innerHeight;
var grid = [];
for (var j = 0; j < c.height; j++) {
grid.push([]);
for (var i = 0; i < c.width; i++) {
grid[j].push(0);
}
}
function draw() {
ctx.clearRect(0, 0, c.width, c.height);
for (var j = 0; j < grid.length; j++) {
for (var i = 0; i < grid.length; i++) {
ctx.fillStyle = (grid[i][j] == 0) ? 'red' : 'blue';
ctx.fillRect(i, j, 1, 1);
}
}
}
//setInterval(draw, 10);
draw();
<canvas id="c" style="background-color: black;">
推荐阅读
- c++ - 多线程中是否可能读取对象的一半大小?
- javascript - create a session using php and ajax
- task - freertos subpriority of xSemaphoreTake() within same priority tasks
- r - MLR: Extracting the names of the covariates with non-zero coefficients in CoxBoost
- null - Impala - replace NULL to zero for entire table
- linux - 如何在 GNU/Linux cli 上使用 find regex 排除新行(回车)?
- reactjs - 使用 Switch 标签后 React-Router 不起作用
- python - 字符串比较的时间复杂度
- python - 使用请求获取无效的密码响应,但密码适用于手动登录
- python - 无论输入如何,打印语句默认为第一个“if”语句