-1

3 レベルのネストされた 4 つのループを使用して、一連の 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 の 820、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 に答える