2014-06-12 2 views
-1

Так что у меня возникают трудности с этим двухмерным массивом, который я создал.Javascript Array Breaking my Loop

Я объявил это так:

var objects = new Array(); 

А потом я бегу две петли, один внутри другого, и при этом, значения вызовов в массив, но это, кажется, сломать всю мою петлю (и, следовательно, сценарий), когда он запускается.

for(var i = 0; i <= 32; i++) { 
     dirtRows++; 
     document.getElementById("dirtTable").innerHTML+='<div class="dr" id="dirtRow-' + i + '"></div>'; 
     alert(i); 
     for(var ii = 0; ii < 32; ii++) { 
      dirtBlocks++; 
      document.getElementById("dirtRow-" + i).innerHTML+='<div class="dirt" onclick="destroyIt(' + i + ',' + ii + ')" id="dirt-' + ii + '">' + ii + '</div>'; 
      objects[i][ii] = 1; 
     } 
    } 

Что я могу делать неправильно? Это определенно Массив, который нарушает его.

+0

'Это определенно Массив, разбивает it.' Какого массива? 'objects [i]' 'undefined' в вашем цикле каждый раз :). Вы пытались взглянуть на консоль/отладчик, какова была проблема? Что-то похожее на это: 'Невозможно установить свойство '0' неопределенного' может отображаться в консоли. – Nope

ответ

3

Вы не создали внутренние массивы.

var objects = []; // Use an array literal, not new Array() 
for (var i = 0; i <= 32; i++) { 
    objects[i] = []; // Create sub-array 
    dirtRows++; 
    document.getElementById("dirtTable").innerHTML+='<div class="dr" id="dirtRow-' + i + '"></div>'; 
    alert(i); 
    for(var ii = 0; ii < 32; ii++) { 
     dirtBlocks++; 
     document.getElementById("dirtRow-" + i).innerHTML+='<div class="dirt" onclick="destroyIt(' + i + ',' + ii + ')" id="dirt-' + ii + '">' + ii + '</div>'; 
     objects[i][ii] = 1; 
    } 
} 
+0

Спасибо, это отличный способ увидеть это – Matthew

1

Вы должны объявлять объекты [я], чтобы быть массивом:

objects[i] = new Array(); 
objects[i][ii] = 1; 
+0

Может быть, я не понимаю, но я уже объявил массив, как указано в сообщении. – Matthew

+0

Да, вы указали объекты var как массив. Но вы также должны объявить, что объекты [i] также являются массивом. – Sesertin

+2

Массивы по определению являются одномерными. Для создания двумерных массивов при программировании вам необходимо создать массив массивов. Вы уже создали массив-держатель. Вы не создали ни одного из внутренних массивов, хотя это даст вам двумерность, которую вы ищете. – David