Javascript数组赋值问题

时间:2013-03-10 01:54:38

标签: javascript arrays variable-assignment

我正在尝试通过使用三级嵌套四循环来分配一系列81个盒子的自动i.d号码。这是我的代码。

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,但是在它离开main for循环后,我最终分别以1/3 820s,821和822结束。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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]