gpt4 book ai didi

javascript - 使用二维数组填充 Javascript 表

转载 作者:行者123 更新时间:2023-11-27 23:48:30 25 4
gpt4 key购买 nike

我对 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
}

}
}

任何见解都将非常感激。

最佳答案

当我运行它时,你的代码基本上有两个问题:

  1. 在你的方法中populateTable()变量_r_c没有定义,所以我将它们作为参数传递。

  2. 方法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 fiddle :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 fiddle :https://jsfiddle.net/Ls76kk2a/3/

关于javascript - 使用二维数组填充 Javascript 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32939176/

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