---
title: "Id som inte finns..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/115900-id-som-inte-finns"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Troxy"
published: "2004-11-14T19:03:20.000Z"
updated: "2004-11-15T19:24:15.000Z"
replies: 4
views: 236
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/115900-id-som-inte-finns"
---

# Id som inte finns...

## #1 — Troxy, 2004-11-14T19:03Z

Kod:

```
document.getElementById(menu_id).style.display = "block";
```

Detta kör jag i en funktion som jag anropar lite över allt...

menu_id innehåller namnet på ett element som jag ska byta ut lite attribut på, i detta exempel display-attributet i CSS.

Hur skapar jag en kod som förhindrar att det blir scriptfel om menu_id innehåller ett id som inte finns?

Kanske en If-sats som kollar: "Om detta id finns..." osv?

Hjälp tack!

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

## #2 — dectgap, 2004-11-14T19:19Z

```
var elm;
if(elm = document.getElementById(menu_id))
   elm.style.display = "block";
```

borde fungera.

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

## #3 — Troxy, 2004-11-14T21:08Z

Tack!

Några frågor:

1\. Varför behövs inga klammrar {} efter if-satsen?
2\. Hur kollar man så att flera objekt måste finnas?

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

## #4 — dectgap, 2004-11-14T22:30Z

1\. Om du bara har ett uttryck som ska utföras om if-satsens jämförelse är sann behövs inga måsvingar ( { } ).

Betrakta

```
if(condition)
   expression1; // kommer bara att köras om condition är true
expression2; // kommer att köras oavsett
```

Vill man att båda ska köras får vi använda måsvingarna för att skapa ett *block*:

```
if(condition) {
   expression1;
   expression2;
}
```

Trots mitt användande i föregående inlägg är det en god idé att alltid använda måsvingar, även om de inte behövs, eftersom det underlättar läsning av koden och minskar risken för huvudkliande om man ändrar något i koden.

2\. Vilken lösning som är smartast beror lite på hur du vill att det ska fungera, men ett sätt är som följer:

```
var elm1, elm2;

if(elm1 = document.getElementById(menu_id1) && elm2 = document.getElementById(menu_id2)) {
   elm1.style.display = "block";
   elm2.style.display = "block";
}
```

För att sortera bort läsare som inte förstår sig på *getElementById()* (även om de inte är så många idag) kan man ändra till

```
if(document.getElementById &&
   elm1 = document.getElementById(menu_id1) &&
   elm2 = document.getElementById(menu_id2)) {
```

Radbrytningarna är bara där för att raden inte ska bli för lång.

Det är inget tvång att ha tilldelningen i jämförelse-uttrycket (i brist på bättre ord), men för att slippa att först kolla efter om ett element finns och sedan skapa en referens till det slog jag två flugor i en smäll.

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

## #5 — Troxy, 2004-11-15T19:24Z

Tack så mycket!!!

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/115900-id-som-inte-finns
