2013-03-10 84 views
-1

我想通過使用三級嵌套四循環來分配一系列81盒自動i.d編號。這是我的代碼。Javascript陣列分配問題

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。我該如何解決?

+0

@minitech它肯定不會:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array#Example.3A_Creating_a_two-dimensional_array – 2013-03-10 01:59:19

+1

@ExplosionPills:這是一個數組的數組。這是否是一個多維數組是值得商榷的,但您會注意到它無論如何都不使用逗號語法。 – Ryan 2013-03-10 02:01:41

+0

@minitech的文檔說「二維」。我認爲關於「維度」和「多重」的定義沒有任何爭議。 – 2013-03-10 02:05:37

回答

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]

+0

所有這一切使ids荒謬數字像「1,0,0,1,0,1,1,0,2,1,1,0,1 ,1,1「(這是三個ID在一個),並使其中一些未定義。 – 2013-03-10 02:35:37

+0

@Existential_Realist:首先:你是否把所有的'box [*,*,*]'都改成了'box [*] [*] [*]'?其次,'box [3] [5] [1]'不是一個有效的索引。第二個「級別」只有索引0,1和2。 – Ryan 2013-03-10 02:44:48