使用二维数组填充Javascript表
Using a 2 dimensional array to populate a Javascript table
我是JavaScript的新手,仍然在弄清楚事物交互的方式,所以我很抱歉,如果这是显而易见的。我最终尝试创建一个滑动瓷砖谜题,但目前我需要创建一个二维数组,将填充我的网格值(1-8)。到目前为止,基本上我所有的信息都是从互联网搜索中收集的,因为我的其他资源已经被证明是相当无用的。
下面是生成网格的代码:function newPuzzle(r, c)
{
var table = document.createElement("table");
for (var i = 0; i < r; i++)
{
var row = document.createElement('tr');
for (var j = 0; j < c; j++)
{
var column = document.createElement('td');
if (i%2 == j%2)
{
column.className = "even";
}
else
{
column.className = "odd";
}
row.appendChild(column);
}
table.appendChild(row);
}
document.body.appendChild(table);
populateTable();
}
最后,我调用了populateTable()函数(我甚至不确定是否会工作),下面是该函数的代码:
function populateTable()
{
var cell = new Array(_r);
for (var i = 0; i < _r; i++)
{
cell[i] = new Array(_c);
}
for (var i = 0; i < cell.length; ++i)
{
var entry = cell[i];
for (var j = 0; j < entry.length; ++j)
{
var gridTable = document.getElementByTagName("table");
var _cells = gridTable.rows[i].cells[j].innerHTML = "2";
//the 2 is just for testing
}
}
}
你的代码基本上有两个问题,当我运行它:
-
在您的方法
populateTable()
中,变量_r
和_c
未定义,因此我将它们作为参数传递。 -
方法
document.getElementByTagName
不存在,它是复数document.getElementsByTagName
,它反过来返回所有<table>
元素的数组,所以你必须选择你想要的一个-我选择了第一个,因为我假设你的页面上只有一个表。
修改如下:
function newPuzzle(r, c)
{
var table = document.createElement("table");
for (var i = 0; i < r; i++)
{
var row = document.createElement('tr');
for (var j = 0; j < c; j++)
{
var column = document.createElement('td');
if (i%2 == j%2)
{
column.className = "even";
}
else
{
column.className = "odd";
}
row.appendChild(column);
}
table.appendChild(row);
}
document.body.appendChild(table);
// here we pass _r and _c as arguments
populateTable(r,c);
}
function populateTable(_r,_c)
{
var cell = new Array(_r);
for (var i = 0; i < _r; i++)
{
cell[i] = new Array(_c);
}
for (var i = 0; i < cell.length; ++i)
{
var entry = cell[i];
for (var j = 0; j < entry.length; ++j)
{
// getElementsByTagName returns an array of all table elements
var gridTable = document.getElementsByTagName("table");
// we select the first table element with the array index [0]
var _cells = gridTable[0].rows[i].cells[j].innerHTML = "2";
//the 2 is just for testing
}
}
}
一个交互式的JS提琴:https://jsfiddle.net/Ls76kk2a/2/
一个优化技巧:给你的表一个唯一的ID,像这样:var table = document.createElement("table");
table.id = "mySuperCoolTable";
那么你可以确保你得到正确的:
var gridTable = document.getElementById("mySuperCoolTable");
由于ID必须是唯一的,因此只返回一个(或不返回)表。
回复你的评论:
下面是一个如何填充除最后一个元素以外的所有元素的示例:
function populateTable(_r,_c)
{
var cell = new Array(_r);
for (var i = 0; i < _r; i++)
{
cell[i] = new Array(_c);
for (var j = 0; j < _c; j++) {
cell[i][j] = i*_c + j;
}
}
// fix the last one
cell[_r-1][_c-1] = "X";
for (var i = 0; i < cell.length; ++i)
{
var entry = cell[i];
for (var j = 0; j < entry.length; ++j)
{
var gridTable = document.getElementsByTagName("table");
var _cells = gridTable[0].rows[i].cells[j].innerHTML = cell[i][j];
}
}
}
这里是JS的小提琴:https://jsfiddle.net/Ls76kk2a/3/
相关文章:
- 椭圆字幕选择,然后在Photoshop中使用Javascript填充颜色
- 使用javascript填充选择框
- 编辑后无法用Javascript填充文本框
- 用PHP/MMySQL和JavaScript填充几个HTML分区
- HTML5使用Javascript填充文本标记的有效方式
- 使用javascript填充Codeigniter(表单助手)-下拉列表
- 在 asp.net 中用javascript填充国家和城市下拉列表
- 创建唯一选项,然后使用 JavaScript 填充多个选择
- 如何使用Javascript填充输入文本字段
- 使用javascript填充棋盘棋子
- 如何使用由Javascript填充的Python从网站获取数据
- 如何使用行下方的JSON和Javascript填充表
- 停止jQuery表单验证重置由其他JavaScript填充的typeahead.js输入字段
- 用用户输入的javascript填充
- 用javascript填充对象数组
- 当用户输入时打开一个弹出窗口,使用javascript填充表中的输入字段
- 用Javascript填充剑道网格列菜单过滤选项
- 基于var创建JavaScript填充href
- Javascript填充缺失的范围(整数)
- Jquery 移动干扰 JavaScript 填充选择框