---
title: "Arrayer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/137984-arrayer"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "aasah"
published: "2005-11-20T22:22:41.000Z"
updated: "2005-11-23T13:14:46.000Z"
replies: 12
views: 325
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/137984-arrayer"
---

# Arrayer

## #1 — aasah, 2005-11-20T22:22Z

1) Måste man veta hur lång arrayen ska vara när man skapar den, eller kan man lägga till fler index efter hand?

2) Måste index vara heltal, eller kan man indexera med bokstäver?

3) Hur ser en multidimensionell array ut i JS? Hur definieras den?

Permalänk: https://www.webforum.nu/p/137984

## #2 — Peter S, 2005-11-20T22:33Z

1) Du behöver inte veta dess storlek
2) Nej, s.k. associativa arrayer finns också:

```
var arr = [];
arr["uno"] = 1;
arr["dos"] = "2";
arr["tres"] = new Number(3);
```

3) Några exempel:

```
var arr = [["a","b","c"],["d","e","f"]];
// arr[0][0] = "a"
// arr[0][2] = "c"
// arr[1][1] = "e"

// eller
var k = new Array();
for (var i = 0; i < 10; ++i){
  k[i] = new Array();
}
```

  :)

Permalänk: https://www.webforum.nu/p/1713277

## #3 — aasah, 2005-11-20T22:36Z

Toppen! :e Tack!

Permalänk: https://www.webforum.nu/p/1713278

## #4 — aasah, 2005-11-21T21:13Z

Hmmm, var ska detta definieras?   :q 

Följande genererar fel. "startPosJSarr\[...\]indexDown är null " någonting... Se bifogad bild. (Färgen är gif:s fel, men det går att läsa...)

```
<script type="text/javascript">
var letterBoxJSarr = new Array();
var startPosJSarr = new Array();

//Funkar inte heller
startPosJSarr["A1"]["indexDown"] = "1 (A-D)";
startPosJSarr["A1"]["indexAcross"] = "A (1-4)";
startPosJSarr["C1"]["indexAcross"] = "C (1-4)";

function markWord(row, col) {
  var ruta = document.getElementById("wordBoxHeader");
  var ix = row + col;
  var posD = document.getElementById("wordBoxDownPos");
  var posA = document.getElementById("wordBoxAcrossPos");
  var inpOrdD = document.getElementById("wordBoxDownWord");
  var subD = document.getElementById("wordBoxDownSubmit");
  var inpOrdA = document.getElementById("wordBoxAcrossWord");
  var subA = document.getElementById("wordBoxAcrossSubmit");
  ruta.innerText = row + " " + col;
  //posD.innerText = ix + " down";
  posD.innerText = startPosJSarr[ix]["indexDown"]; //Fel även för def index
  posA.innerText = startPosJSarr[ix]["indexAcross"]; //dito

  if (posD.innerText != "-") {
    inpOrdD.disabled = false;
    subD.disabled = false;
  }
  else {
    inpOrdD.disabled = true;
    subD.disabled = true;
  }
  if (posA.innerText != "-") {
    inpOrdA.disabled = false;
    subA.disabled = false;
  }
  else {
    inpOrdA.disabled = true;
    subA.disabled = true;
  }

}

</script>
```

Däremot funkar följande:

```
<script type="text/javascript">
var letterBoxJSarr = new Array();
var startPosJSarr = new Array();

/*
//Funkar inte heller
startPosJSarr["A1"]["indexDown"] = "1 (A-D)";
startPosJSarr["A1"]["indexAcross"] = "A (1-4)";
startPosJSarr["C1"]["indexAcross"] = "C (1-4)";
*/

function markWord(row, col) {
  var ruta = document.getElementById("wordBoxHeader");
  var ix = row + col;
  var posD = document.getElementById("wordBoxDownPos");
  var posA = document.getElementById("wordBoxAcrossPos");
  var inpOrdD = document.getElementById("wordBoxDownWord");
  var subD = document.getElementById("wordBoxDownSubmit");
  var inpOrdA = document.getElementById("wordBoxAcrossWord");
  var subA = document.getElementById("wordBoxAcrossSubmit");
  ruta.innerText = row + " " + col;
  posD.innerText = ix + " down"; //OK
  //posD.innerText = startPosJSarr[ix]["indexDown"];
  //posA.innerText = startPosJSarr[ix]["indexAcross"];

  if (posD.innerText != "-") {
    inpOrdD.disabled = false;
    subD.disabled = false;
  }
  else {
    inpOrdD.disabled = true;
    subD.disabled = true;
  }
  if (posA.innerText != "-") {
    inpOrdA.disabled = false;
    subA.disabled = false;
  }
  else {
    inpOrdA.disabled = true;
    subA.disabled = true;
  }

}

</script>
```

Alltså är det arrayen som strular.

("heller" ovan kommer ifrån att jag naturligtvis inte vill hårdkoda innehållet eg. Det här är bara ett sätt att fatta hur det funkar - eller inte funkar... :( ;))

Bilagor:

- [felmedd.GIF](https://www.webforum.nu/a/8535.gif)

Permalänk: https://www.webforum.nu/p/1713681

## #5 — Peter S, 2005-11-21T21:31Z

Testa

```
var letterBoxJSarr = new Array();
var startPosJSarr = new Array();

//Funkar förhoppningsvis nu
startPosJSarr["A1"] = new Array();
startPosJSarr["A1"]["indexDown"] = "1 (A-D)";
startPosJSarr["A1"]["indexAcross"] = "A (1-4)";
startPosJSarr["C1"] = new Array();
startPosJSarr["C1"]["indexAcross"] = "C (1-4)";
```

Permalänk: https://www.webforum.nu/p/1713693

## #6 — aasah, 2005-11-22T21:58Z

Ja, det funkar. :)

1) 
Men... hur kollar jag då om new Array() är gjort eller ej? För när värdena inte hårdkodas kommer ett visst index' down-värden att fyllas oberoende av across-värdena. Vissa positioner startar nya ord både across och down, andra positioner har bara ettdera. Så om 

```
startPosJSarr["A1"] = new Array();
startPosJSarr["A1"]["indexAcross"] = "A (1-4)";
```

detta redan gjorts kan jag ju inte göra 

```
startPosJSarr["A1"] = new Array();
startPosJSarr["A1"]["indexDown"] = "1 (A-D)";
```

utan att tappa den första informationen. Och om inget across lagts in på den positionen måste jag göra new Array() först. Hur lösa?

2) Måste arrayen fyllas med värden i HEAD, eller kan det göras i BODY? Ser en funktion i HEAD, globala variabler i BODY-delen, eller bara sådant som definierats ovanför?

Permalänk: https://www.webforum.nu/p/1714057

## #7 — Peter S, 2005-11-23T00:37Z

1)

```
if (typeof startPosJSarr["A1"] == "undefined"){
  // startPosJSarr["A1"] = new Array(); kan inte ha gjorts
}
```

2) Arrayen kan du fylla var helst det passar. Globala variabler är inte kopplade till någon del i HTML-koden.

Permalänk: https://www.webforum.nu/p/1714084

## #8 — aasah, 2005-11-23T11:44Z

Tackar! :D

Permalänk: https://www.webforum.nu/p/1714183

## #9 — aasah, 2005-11-23T12:46Z

OK, vad är det jag inte ser? Jag **tycker**   §jr att alla positiner jag kan trycka i är definierade och att startpositionen för ett ord borde uppenbara sig i Pos när man trycker på valfri vit ruta. Det tycker tydligen inte JS...   :p 

Jag får samma felmeddelande som bifogats ovan. Om ni vill kika på sidan, så är den [här](http://www.tydal.nu/aasah/Lab/IntCW/intCW1Start.php). 

Det jag vill ska hända är att om jag trycker i valfri vit ruta så ska information komma upp i wordBox-rutan om det eller de ord som rutan ingår i.  

**I HEAD**

```
<script type="text/javascript">
var letterBoxJSarr = new Array();
var startPosJSarr = new Array();

function markWord(row, col) {
  var ruta = document.getElementById("wordBoxHeader");
  var ixLB = row + col;
  var ixSPA = startPosJSarr[ixLB]["startAcross"];
  var ixSPD = startPosJSarr[ixLB]["startDown"];
  var posA = document.getElementById("wordBoxAcrossPos");
  var inpOrdA = document.getElementById("wordBoxAcrossWord");
  var subA = document.getElementById("wordBoxAcrossSubmit");
  var posD = document.getElementById("wordBoxDownPos");
  var inpOrdD = document.getElementById("wordBoxDownWord");
  var subD = document.getElementById("wordBoxDownSubmit");
  ruta.innerText = row + " " + col;
  posA.innerText = startPosJSarr[ixSPA]["indexAcross"];
  posD.innerText = startPosJSarr[ixSPD]["indexDown"];

  if (posA.innerText != "-") {
    inpOrdA.disabled = false;
    subA.disabled = false;
  }
  else {
    inpOrdA.disabled = true;
    subA.disabled = true;
  }
  if (posD.innerText != "-") {
    inpOrdD.disabled = false;
    subD.disabled = false;
  }
  else {
    inpOrdD.disabled = true;
    subD.disabled = true;
  }

}
</script>
```

**I BODY definieras följande:**

```
<table><tr><td class="index">&nbsp;</td><td class="index">1</td><td class="index">2</td><td class="index">3</td><td class="index">4</td></tr><tr><td class="index">A</td><td class="vit" onclick="markWord('A', 1);">
                             <input type="hidden" name="A 1" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('A', 2);">
                             <input type="hidden" name="A 2" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('A', 3);">
                             <input type="hidden" name="A 3" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('A', 4);">
                             <input type="hidden" name="A 4" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td class="index">B</td><td class="vit" onclick="markWord('B', 1);">
                             <input type="hidden" name="B 1" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="svart">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('B', 3);">
                             <input type="hidden" name="B 3" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="svart">&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td class="index">C</td><td class="vit" onclick="markWord('C', 1);">
                             <input type="hidden" name="C 1" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('C', 2);">
                             <input type="hidden" name="C 2" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('C', 3);">
                             <input type="hidden" name="C 3" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="vit" onclick="markWord('C', 4);">
                             <input type="hidden" name="C 4" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td class="index">D</td><td class="vit" onclick="markWord('D', 1);">
                             <input type="hidden" name="D 1" size=1 value="">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="svart">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="svart">&nbsp;&nbsp;&nbsp;&nbsp;</td><td class="svart">&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></table><BR><BR><form><form>
         <table><tr><td id=\"wordBoxHeader\" colspan=\"3\"><center>You clicked on:</center></td></tr>
         <tr><th>Pos</th><th>The Word</th><th>Direction</th></tr>
         <tr><td id=\"wordBoxAcrossPos\">-</td>
             <td><input type=\"text\" id=\"wordBoxAcrossWord\" disabled></td>
             <td><input type=\"submit\" id=\"wordBoxAcrossSubmit\" value=\"Add Across!\" disabled></tr>
         <tr><td id=\"wordBoxDownPos\">-</td>
             <td><input type=\"text\" id=\"wordBoxDownWord\" disabled></td>
             <td><input type=\"submit\" id=\"wordBoxDownSubmit\" value=\"Add Down!\" disabled></tr>
         </table><BR><BR>

<script type=\"text/javascript\">
letterBoxJSarr["A1"] = new Array();
letterBoxJSarr["A1"]["startDown"] = "A1";
letterBoxJSarr["A1"]["nextDown"] = "B1";
letterBoxJSarr["A1"]["startAcross"] = "A1";
letterBoxJSarr["A1"]["nextAcross"] = "A2";
letterBoxJSarr["A2"] = new Array();
letterBoxJSarr["A2"]["startDown"] = "-";
letterBoxJSarr["A2"]["nextDown"] = "-";
letterBoxJSarr["A2"]["startAcross"] = "A1";
letterBoxJSarr["A2"]["nextAcross"] = "A3";
letterBoxJSarr["A3"] = new Array();
letterBoxJSarr["A3"]["startDown"] = "A3";
letterBoxJSarr["A3"]["nextDown"] = "B3";
letterBoxJSarr["A3"]["startAcross"] = "A1";
letterBoxJSarr["A3"]["nextAcross"] = "A4";
letterBoxJSarr["A4"] = new Array();
letterBoxJSarr["A4"]["startDown"] = "-";
letterBoxJSarr["A4"]["nextDown"] = "-";
letterBoxJSarr["A4"]["startAcross"] = "A1";
letterBoxJSarr["A4"]["nextAcross"] = ".";
letterBoxJSarr["C1"] = new Array();
letterBoxJSarr["C1"]["startDown"] = "A1";
letterBoxJSarr["C1"]["nextDown"] = "D1";
letterBoxJSarr["C1"]["startAcross"] = "C1";
letterBoxJSarr["C1"]["nextAcross"] = "C2";
letterBoxJSarr["C2"] = new Array();
letterBoxJSarr["C2"]["startDown"] = "-";
letterBoxJSarr["C2"]["nextDown"] = "-";
letterBoxJSarr["C2"]["startAcross"] = "C1";
letterBoxJSarr["C2"]["nextAcross"] = "C3";
letterBoxJSarr["C3"] = new Array();
letterBoxJSarr["C3"]["startDown"] = "A3";
letterBoxJSarr["C3"]["nextDown"] = ".";
letterBoxJSarr["C3"]["startAcross"] = "C1";
letterBoxJSarr["C3"]["nextAcross"] = "C4";
letterBoxJSarr["C4"] = new Array();
letterBoxJSarr["C4"]["startDown"] = "-";
letterBoxJSarr["C4"]["nextDown"] = "-";
letterBoxJSarr["C4"]["startAcross"] = "C1";
letterBoxJSarr["C4"]["nextAcross"] = ".";
letterBoxJSarr["B1"] = new Array();
letterBoxJSarr["B1"]["startDown"] = "A1";
letterBoxJSarr["B1"]["nextDown"] = "C1";
letterBoxJSarr["B1"]["startAcross"] = "-";
letterBoxJSarr["B1"]["nextAcross"] = "-";
letterBoxJSarr["D1"] = new Array();
letterBoxJSarr["D1"]["startDown"] = "A1";
letterBoxJSarr["D1"]["nextDown"] = ".";
letterBoxJSarr["D1"]["startAcross"] = "-";
letterBoxJSarr["D1"]["nextAcross"] = "-";
letterBoxJSarr["B3"] = new Array();
letterBoxJSarr["B3"]["startDown"] = "A3";
letterBoxJSarr["B3"]["nextDown"] = "C3";
letterBoxJSarr["B3"]["startAcross"] = "-";
letterBoxJSarr["B3"]["nextAcross"] = "-";
startPosJSarr["A1"] = new Array();
startPosJSarr["A1"]["indexDown"] = "1 (A-D)";
startPosJSarr["A1"]["lengthDown"] = "4";
startPosJSarr["A1"]["indexAcross"] = "A (1-4)";
startPosJSarr["A1"]["lengthAcross"] = "4";
startPosJSarr["C1"] = new Array();
startPosJSarr["C1"]["indexDown"] = "-";
startPosJSarr["C1"]["lengthDown"] = "-";
startPosJSarr["C1"]["indexAcross"] = "C (1-4)";
startPosJSarr["C1"]["lengthAcross"] = "4";
startPosJSarr["A3"] = new Array();
startPosJSarr["A3"]["indexDown"] = "3 (A-C)";
startPosJSarr["A3"]["lengthDown"] = "3";
startPosJSarr["A3"]["indexAcross"] = "-";
startPosJSarr["A3"]["lengthAcross"] = "-";
</script><BR>
```

Permalänk: https://www.webforum.nu/p/1714217

## #10 — Peter S, 2005-11-23T12:57Z

Du har en massa \<br\> i ditt nedre JS-block på hemsidan.

Permalänk: https://www.webforum.nu/p/1714228

## #11 — aasah, 2005-11-23T13:04Z

Inte nu längre. (De kom dit när jag skrev ut på skärmen i felsökningssyfte.)

Men det gjorde ingen skillnad... :(

Permalänk: https://www.webforum.nu/p/1714233

## #12 — Peter S, 2005-11-23T13:08Z

Ok.  :) 

Här:

```
posA.innerText = startPosJSarr[ixSPA]["indexAcross"];
```

Försöker du med indexet "ixSPA" accessa ett element. Men eftersom var ixSPA = startPosJSarr\[ixLB\]\["startAcross"\]; ej är definierad får du ett felmeddelande; du har ju inte givit något värde till, exempelvis, var ixSPA = startPosJSarr\["A1"\]\["startAcross"\];. Är det inte letterBoxJSarr du vill använda?

Permalänk: https://www.webforum.nu/p/1714236

## #13 — aasah, 2005-11-23T13:14Z

Tusen tack! :birp

Permalänk: https://www.webforum.nu/p/1714244

---

Tråden på webben: https://www.webforum.nu/amne/javascript/137984-arrayer
