2015-02-20 3 views
0

Я пытаюсь создать 4-мерный массив. Я заполняю его динамически и использую его содержимое в другой функции. Но контент пуст. Есть ли ошибка ниже кода?Javascript создать многомерный массив

var datas = []; // day number of a week 
    for(var i = 0; i < 7; i++) { 
      var size = 24*60/timeInterval; 
      datas[i] = []; 

      for(var j = 0; j < size; j++) { 
       var size2 = allCoords.length/2; 
       datas[i][j] = []; 

       for(var k = 0; k < size2; k++) { 
        datas[i][j][k] = []; 
       } 
      } 
     } 

Испытываю ниже пример:

function foo1() 
{ 
    datas[0][0][0].push(10); 
} 

function foo2() 
{ 

    document.getElementByID('result').innerHTML = datas[0][0][0]; 
} 

Я вижу только ,,,,,,,.

+0

Как вы звоните '' foo1' и foo2', и как часто? – Bergi

+0

Почему 'foo1' только нажимает на' datas [0] [0] [0] ', вам нужен этот четырехмерный массив? Пожалуйста, покажите нам свой фактический код, который заполняет его контентом. – Bergi

+0

[this] (http://jsfiddle.net/ybf5oo9e/) работает для меня – lante

ответ

1

Я думаю, что основная проблема заключается в том, что вы получаете элемент, в котором вы хотите показать свой результат плохо, используя getElementByID вместо getElementById. Также убедитесь, что ваш элемент имеет свойство innerHTML, чтобы записать результат, или, альтернативно, использовать value.

Я пишу следующий пример, используя <textArea id="result"></textArea> и генерируя кнопку, которая вызывает foo1();foo2();onClick. Это работает для меня.

В образце я использую случайное значение для timeInterval и allCoords.length.

Обратите внимание, что вам нужен 4-мерный массив, однако вы создаете трехмерную.

var timeInterval = 60; 
 
var allCoords = { length : 1}; 
 
var datas = []; // day number of a week 
 
    for(var i = 0; i < 7; i++) { 
 
      var size = 24*60/timeInterval; 
 
      datas[i] = []; 
 

 
      for(var j = 0; j < size; j++) { 
 
       var size2 = allCoords.length/2; 
 
       datas[i][j] = []; 
 

 
       for(var k = 0; k < size2; k++) { 
 
        datas[i][j][k] = []; 
 
       } 
 
      } 
 
     } 
 

 

 
function foo1() 
 
{ 
 
    datas[0][0][0].push(10); 
 
} 
 

 
function foo2() 
 
{ 
 
    document.getElementById('result').value = datas[0][0][0]; 
 
}
<textArea id="result"></textArea> 
 
<input type="button" value="foo" onclick="foo1();foo2();"/>

Надеется, что это помогает,

+0

Извините, я ничего не вижу, когда пишу в текстовом поле и нажимаю foo. –

+0

Почему вы пишете текстовую область? просто нажмите 'foo', который записывает' data [0] [0] [0] 'в textArea. Какая это твоя пурпура, не так ли? – albciff

+0

о, вы правы. Я был смущен. –

Смежные вопросы