---
title: "foreach eller dylikt?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/139375-foreach-eller-dylikt"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "aasah"
published: "2005-12-14T23:23:53.000Z"
updated: "2005-12-15T18:50:14.000Z"
replies: 10
views: 416
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/139375-foreach-eller-dylikt"
---

# foreach eller dylikt?

## #1 — aasah, 2005-12-14T23:23Z

Finns det någon smart motsvarighet till PHP:s foreach vilken rasslar igenom alla satta värden i en associerad array? Alltså, när en for-slinga är svår att använda? Hur gör man annars?   :q

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

## #2 — @nders, 2005-12-15T04:36Z

[for - in](http://www.devguru.com/technologies/javascript/11477.asp)?

Mvh

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

## #3 — aasah, 2005-12-15T12:49Z

Tjusigt! Tack! :e

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

## #4 — @nders, 2005-12-15T12:52Z

Vasse! :bire

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

## #5 — aasah, 2005-12-15T17:37Z

Jag vet inte om det är jag som inte föstår hur man använder funktionen eller var felet är, men markWord strular. Så länge de \*\*\*-markerade raderna är avkommenterade slipper jag JS-fel, men om jag tar bort kommentarmarkeringen från vilken som helst av dem kommer felen.

> **JS-felmeddelande skrev:**
>
> 'null' är null och inget objekt

Va?   :q Vad är tokigt? [Sidan](http://www.tydal.nu/aasah/Lab/IntCW/intCWtst.php).

```
function markWord(row, col) {
   var ixLB = row + col;
   var formHead = document.getElementById("wordBoxHeader");
   formHead.innerHTML = "<center><font color=black>You clicked on:</font> " + row + " " + col + "</center>";
   //Omvänd ordning gör att Across focus hamnar överst, därefter Down osv om flera riktingar finns
   var usedDirs = 0;
   for (pid in letterBoxJSarr[ixLB]) {
      var ixSP = letterBoxJSarr[ixLB][pid]["start"];
      var wordDir = startPosJSarr[ixSP]["direction"];
      usedDirs = usedDirs | dirJSarr[wordDir];
      var formPos = document.getElementById("wordBoxPos" + wordDir);
      var startRuta = document.getElementById("wordBoxStart" + wordDir);
      var pidHid = document.getElementById("wordBoxPid" + wordDir);
// ***     formPos.innerText = wordDir + " " + startPosJSarr[ixSP][pid]["index"];
// ***     startRuta.value = ixSP;
// ***     pidHid.value = pid;
   }
   var focusSet = false;
   for (d in dirJSarr) {
      var formWord = document.getElementById("wordBoxWord" + d);
      var formButton = document.getElementById("wordBoxButton" + d);
      if ((usedDirs & dirJSarr[d]) != 0) { //används
         formWord.disabled = false;
         formButton.disabled = false;
         if (!focusSet) {
            formWord.focus();
            focusSet = true;
         }
      }
      else {  //används ej
        var formPos = document.getElementById("wordBoxPos" + d);
        var startRuta = document.getElementById("wordBoxStart" + d);
        formPos.innerText = "-";
        startRuta.value = "";
        formWord.disabled = true;
        formButton.disabled = true;
      }
   }
}
```

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

## #6 — Peter S, 2005-12-15T17:46Z

Hej!  :) 

Det är ett par saker som är odefinierade. T.ex. är startPosJSarr\[ixSP\]\["direction"\] odefinierad när jag trycker på, säg, A10.

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

## #7 — aasah, 2005-12-15T18:02Z

Hej, Peter S! :)

> **Peter S skrev:**
>
> ... Det är ett par saker som är odefinierade. T.ex. är startPosJSarr\[ixSP\]\["direction"\] odefinierad när jag trycker på, säg, A10.

Varför?

> **Källa skrev:**
>
> //...
> letterBoxJSarr\["A9"\] = new Array();
> letterBoxJSarr\["A9"\]\["1"\] = new Array();
> letterBoxJSarr\["A9"\]\["1"\]\["start"\] = "A9";
> letterBoxJSarr\["A9"\]\["1"\]\["next"\] = "A10";
> letterBoxJSarr\["A10"\] = new Array();
> letterBoxJSarr\["A10"\]\["1"\] = new Array();
> letterBoxJSarr\["A10"\]\["1"\]\["start"\] = "A9";
> letterBoxJSarr\["A10"\]\["1"\]\["next"\] = ".";
> letterBoxJSarr\["A10"\]\["15"\] = new Array();
> letterBoxJSarr\["A10"\]\["15"\]\["start"\] = "A10";
> letterBoxJSarr\["A10"\]\["15"\]\["next"\] = "B10";
> //...
> startPosJSarr\["A9"\] = new Array();
> startPosJSarr\["A9"\]\["1"\] = new Array();
> startPosJSarr\["A9"\]\["1"\]\["direction"\] = "A";
> startPosJSarr\["A9"\]\["1"\]\["index"\] = "A (9-10)";
> startPosJSarr\["A9"\]\["1"\]\["length"\] = "2";
> //...
> startPosJSarr\["A10"\] = new Array();
> startPosJSarr\["A10"\]\["15"\] = new Array();
> startPosJSarr\["A10"\]\["15"\]\["direction"\] = "D";
> startPosJSarr\["A10"\]\["15"\]\["index"\] = "10 (A-G)";
> startPosJSarr\["A10"\]\["15"\]\["length"\] = "7";

Om du trycker på A10 kommer markWord('A', 10) att anropas. Var går det då snett?   :q

Kommer for...in att använda fler värden än pid = 1 och pid = 15?

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

## #8 — Peter S, 2005-12-15T18:20Z

Jag ser ingen startPosJSarr\[ixSP\]\["direction"\] i din kod ovan.

 :)

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

## #9 — aasah, 2005-12-15T18:32Z

Åh! Det första man blir blind på... Har ändrat enligt nedan, men det blir samma fel... :(

```
function markWord(row, col) {
   var ixLB = row + col;
   var formHead = document.getElementById("wordBoxHeader");
   formHead.innerHTML = "<center><font color=black>You clicked on:</font> " + row + " " + col + "</center>";
   //Omvänd ordning gör att Across focus hamnar överst, därefter Down osv om flera riktingar finns
   var usedDirs = 0;
   for (pid in letterBoxJSarr[ixLB]) {
      var ixSP = letterBoxJSarr[ixLB][pid]["start"];
      var wordDir = startPosJSarr[ixSP][pid]["direction"]; //Fixat!
      usedDirs = usedDirs | dirJSarr[wordDir];
      var formPos = document.getElementById("wordBoxPos" + wordDir);
      var startRuta = document.getElementById("wordBoxStart" + wordDir);
      var pidHid = document.getElementById("wordBoxPid" + wordDir);
      formPos.innerText = wordDir + " " + startPosJSarr[ixSP][pid]["index"];
      startRuta.value = ixSP;
      pidHid.value = pid;
   }
   var focusSet = false;
   for (d in dirJSarr) {
      var formWord = document.getElementById("wordBoxWord" + d);
      var formButton = document.getElementById("wordBoxButton" + d);
      if ((usedDirs & dirJSarr[d]) != 0) { //används
         formWord.disabled = false;
         formButton.disabled = false;
         if (!focusSet) {
            formWord.focus();
            focusSet = true;
         }
      }
      else {  //används ej
        var formPos = document.getElementById("wordBoxPos" + d);
        var startRuta = document.getElementById("wordBoxStart" + d);
        formPos.innerText = "-";
        startRuta.value = "";
        formWord.disabled = true;
        formButton.disabled = true;
      }
   }
}
```

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

## #10 — Peter S, 2005-12-15T18:40Z

Klickar jag i A10 försöker raden var formPos = document.getElementById("wordBoxPos" + wordDir); hämta elementen med id = wordBoxPosA och id = wordBoxPosD. Ingen av dem existerar, så formPos blir null och felet uppkommer på raden formPos.innerText...

(Det kanske är nu det skall nämnas att innerText är IE-specifikt; använd innerHTML om du vill ha skriptet mer kompatibelt).

 :)

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

## #11 — aasah, 2005-12-15T18:50Z

Åh vad jag är korkad! Självklart! Tusen tack för hjälpen!!! :e

Och ännu mer tack för påpekandet om IE! Det måste funka i IE, men jag ser helst att det funkar i så många webbläsare som möjligt. :birp

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/139375-foreach-eller-dylikt
