mehrdimensionales array

  • Hallo,

    wenn ich in JavaScript ein Mehrdimensionales Array ausgeben lasse, funktioniert es solange ich schreibe : marray[7][3]
    wenn ich schreibe marray[i][j] dann macht er nichts mehr!

    mfg

  • <script type=text/javascript>


    var dorf = new Array();
    dorf[1] = new Array();

    dorf[1][5] = 1;

    function show()
    {

    for(i = 0; i < 5; i++)
    {
    for(j = 0; j < 5; j++)
    {
    document.getElementById("main"+i).innerHTML = marray[i][j];
    }

    }
    }
    </script>


    wenn ich marray[i][j] auf marray[i] ändere zeigt er mir ,,,,,1 an.

  • Code
    for(i = 0; i < 5; i++) {
     for(j = 0; j < 5; j++) {
     // code
          }
    }

    Mit diesen Schleifen zählst du die Indexe ja numerisch hoch.
    Das heißt beim ersten Durchlauf der ersten Schleife werden die Elemente array[0][0] bis array[0][4] abgearbeitet.
    Beim zweiten Durchlauf der ersten Schleife sind es dann die Elemente array[1][0] bis array[1][4], dann array[2][0] bis array[2][4], usw....

    Da du aber mit

    Code
    dorf[1][5] = 1;

    nur dieses eine Element 'befüllst', sind alle anderen leer.
    Außerdem wird bei deinen Schleifen-Bedigungen nie ein Element mit 5 als Index angesprochen, da dort steht:

    Code
    for (i = 0; i < 5; i++) {

    Wenn i = 5 ist, trifft die Bedingung nicht mehr zu. <= (kleiner-gleich) hätte den gewünschten Effekt.

    Ich frage mich aber auch warum dein Array einmal dorf und einmal marray heißt.
    Die Funktion show() sollte das zu behandelnde Array dann schon als parameter entgegennehmen:

    Code
    function show(array) {
     //code
    }

    Einmal editiert, zuletzt von FaFoo (23. Februar 2009 um 14:08)