-1

我正在尝试通过使用三层嵌套的四循环为一系列 81 个框分配一个自动 ID 号。这是我的代码。

function printBoxes()
    {
        alert("Function Entered");
        var box = new Array();
        alert("Array Created");


        for(var i = 0; i < 9; i++)
        {
            for(var j = 0; j < 3; j++)
            {
                for(var k = 0; k < 3; k++)
                {
                    box[i, j ,k] = [i, j, k];
                }
            }
        }

        alert(box[3,5,1]);

        alert("Arrays Created");

        for(var a = 0; a < 9; a++)
        {
            document.writeln("<br>");

            for(var b = 0; b < 3; b++)
            {
                for(var c = 0; c < 3; c++)
                {   document.writeln("<FORM inputs>")
                    document.write("<INPUT type = 'text' id = ' " + box[a,b,c] + " ' value = ' " + box[a,b,c] + "' size = '1' maxlength = '1'/>");
                    document.writeln("<//FORM>")
                }
            }
        }
    }

我的问题是这样的:虽然我可以使用警告框来查看每个框都被分配了一个正确的 id,但在它离开主 for 循环后,我分别得到 1/3 820s、821 和 822。我该如何解决?

4

1 回答 1

7

JavaScript 中没有特殊情况的多维数组——只有数组,它可以包含数组。所以每次为每个维度创建一个新数组:

var box = [];

for(var i = 0; i < 9; i++)
{
    box[i] = [];

    for(var j = 0; j < 3; j++)
    {
        box[i][j] = [];

        for(var k = 0; k < 3; k++)
        {
            box[i][j][k] = [i, j, k];
        }
    }
}

… 例如。这假装工作的原因是 JavaScript 有一个逗号运算符,它将评估其操作数并返回正确的操作数,所以box[i, j, k]实际上只是意味着box[k].

于 2013-03-10T02:00:50.087 回答