正在更改<td>点击javascript
Changing status of <td> on click with javascript
我正在用javascript制作一个人生的康威游戏,但我的onclick实现无法正常工作。本应在单击td时更改单元格的生存状态,但我在控制台上收到一个错误,显示:TypeError:World.tds未定义。TLDR:不明白为什么onclick不起作用。由于某种原因,World.tds[]未定义。
点击实现:
if (table !== null) {
for (var i = 0; i < 20; i++) {
for (var j = 0; j < 20; j++)
World.tds[i][j].onclick = function() {
if (World.tds[i][j].cells.alive) {
World.tds[i][j].cells.alive = false;
} else {
World.tds[i][j].cells.alive = true;
}
};
}
}
构造函数和tds[]填充
var World = function() {
this.h = maxH;
this.w = maxW;
this.tds = [];
};
//generate the world in which the cells move
World.prototype.init = function() {
var row, cell;
for (var r = 0; r < this.h; r++) {
this.tds[r] = [];
row = document.createElement('tr');
for (var c = 0; c < this.w; c++) {
cell = document.createElement('td');
this.tds[r][c] = cell;
row.appendChild(cell);
}
table.appendChild(row);
}
};
问题语句-当您触发点击处理程序时,到那时,i和j的值已分别更新为20,并且World.tds[20][20]未定义。
将for loop
中的代码更新为
(function(i,j) {
World.tds[i][j].onclick = function() {
if (World.tds[i][j].cells.alive) {
World.tds[i][j].cells.alive = false;
} else {
World.tds[i][j].cells.alive = true;
}
};
})(i,j);
相关文章:
- 改变所有<td>为特定的桌子点击颜色
- 当我点击Hospitails的td时,如何调用ul列表
- 如何在点击tr的td后获取tr的id's元素
- 事件点击不在td元素中的多个锚点标记上处理同一个类
- 点击TD更改TD CSS
- 正在更改<td>点击javascript
- 如何在动态点击TR列中获取TR的第二个TD
- 当我点击td时,在jquery中获取td文本动态
- 防止点击复选框时触发TD点击
- 删除TD标签中的点击
- jQuery DataTable-点击获取最接近td元素的类
- 数据表点击td或td内的(链接)
- 如何根据点击事件从特定TD获得价值
- Angularjs-点击<td>要素
- 通过id点击更改td表背景
- 检查THIS是否点击了TD's的值与数组的值匹配
- 如何在<tr>当点击<td>指向javascript函数
- JQuery如何获取第二和第三TD内容取决于第四TD点击
- 选择单选按钮上的TD点击,同时添加类的活动TD
- JQuery警告TD点击