---
title: "Går det att programmatiskt ange variabelnamn och kolla värdet?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/180621-går-det-att-programmatiskt-ange-variabelnamn-och-kolla-värdet"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "erciz"
published: "2009-10-08T11:34:09.000Z"
updated: "2009-10-08T12:37:09.000Z"
replies: 12
views: 427
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/180621-går-det-att-programmatiskt-ange-variabelnamn-och-kolla-värdet"
---

# Går det att programmatiskt ange variabelnamn och kolla värdet?

## #1 — erciz, 2009-10-08T11:34Z

Jag har gjort ett större formulär med radioknappar. Ungefär:

```
<input type="radio" name="q1" value="a"> Norrköping<br>
<input type="radio" name="q1" value="b"> Linköping<br>
<br>
<input type="radio" name="q2" value="a"> Göteborg<br>
<input type="radio" name="q2" value="b"> Malmö<br>
```

Jag vill sen kolla resultatet med javascript. Svaret på frågorna får jag genom att kolla variablerna **q1** och **q2**. Går detta att göra programmatiskt? hur? t.ex. **'q'+n**?

t.ex. 

```
for(var n = 1; n < 3; n++){
    if('q'+n == 'a') points++;
}
```

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

## #2 — metalboy, 2009-10-08T11:37Z

Du skulle kunna göra det med eval()

```
if (eval('q'+n) == 'a')
```

Edit:
Tittade inte tillräckligt noga, du vill ju hämta värdena från html-taggar... återkommer

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

## #3 — erciz, 2009-10-08T11:46Z

> **[metalboy skrev:](https://www.webforum.nu/p/1483373)**
>
> Tittade inte tillräckligt noga, du vill ju hämta värdena från html-taggar... återkommer

Mm, men kommer jag inte åt forumlärvärdet från **q1** genom att kolla värdet på variablen **q1**? ...men får inte det där att fungera. Testade 

```
var n = 1;
if(eval('q'+n) == 'a'){
  alert('a');
} else {
  alert('b');
}
```

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

## #4 — nitro2k01, 2009-10-08T12:00Z

Något sådant här kanske?

```
<script type="text/javascript">

function iterateOptions(){
	var emptyOptGroups = [];

	for (var i=1; document.getElementsByName('q'+i).length;i++){

		var o=document.getElementsByName('q'+i), c="";

		for (var j=0; j<o.length; j++){
			if(o[j].checked)
				c=o[j].value;
		}
		
		if (!c)
			emptyOptGroups.push(i);
	}
	if(emptyOptGroups.length){
		alert('Du har glömt att fylla i dessa frågor: ' + emptyOptGroups.join(', '));
		return false;
	}else{
		return true;
	}
}

</script>
```

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

## #5 — erciz, 2009-10-08T12:07Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1483379)**
>
> ...

Strålande!

Fast, hmm. Får det inte riktigt att fungera. Testade att använda **getElementsByName** som du tipsade om.
Kod, men svaret blir **undefined**:

```
var n = 1;
alert(document.getElementsByName('q'+n).value);
```

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

## #6 — The_Hulk, 2009-10-08T12:21Z

Om du har fått en lösning på din fråga så acceptera gärna det svaret, Då behöver inte vi andra titta in här för att försöka hjälpa till när det redan är löst.

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

## #7 — erciz, 2009-10-08T12:22Z

Även detta resulterar i **undefined**:

```
var n = 1;
alert(document.getElementsByName('q'+n).checked);
```

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

## #8 — The_Hulk, 2009-10-08T12:24Z

getElementsByName returnerar en lista med objekt, inte ett enskilt objekt.

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

## #9 — nitro2k01, 2009-10-08T12:25Z

getElementsByName returnerar en array med element. (Alltså alla element med det namnet) Därav den inre loopen.

```
n=1;
alert(document.getElementsByName('q'+n)[0].value);
alert(document.getElementsByName('q'+n)[1].value);
```

Den koden bör visa a följt av b.

Edit: o i den inre loopen refererar till resultatet av document.getElementsByName('q'+n). Du skulle alltså kunna skriva exempel-koden ovan så här med samma resultat:

```
n=1;
o=document.getElementsByName('q'+n);
alert(o[0].value);
alert(o[1].value);
```

Dessutom ska det naturligtvis vara n=1; i exemplet och inte q=1; :)

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

## #10 — erciz, 2009-10-08T12:25Z

> **[The_Hulk skrev:](https://www.webforum.nu/p/1483383)**
>
> Om du har fått en lösning på din fråga så acceptera gärna det svaret, Då behöver inte vi andra titta in här för att försöka hjälpa till när det redan är löst.

Sorry. Hade markerat det som löst. Men sen när jag märkte att det jag trodde var lösningen inte fungerade så avmarkerade jag, precis innan jag skrev att det inte fungerade. Skulle naturligtvis gjort det i omvänd ordning  :r

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

## #11 — The_Hulk, 2009-10-08T12:26Z

Vill du kunna hämta upp objektet styckvis så får du lägga till id-attributet, tänk på att det måste vara unikt för varje html-tagg du använder det på.
då kan du använda getElementById(id)

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

## #12 — The_Hulk, 2009-10-08T12:32Z

om du vill kolla ifall en radio-button är ikryssad kan du göra på följande

```
n=1;
o1 = document.getElementsByName('q'+n)[0];
o2 = document.getElementsByName('q'+n)[1];

alert(o1.checked);
alert(o2.checked);
```

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

## #13 — erciz, 2009-10-08T12:37Z

> **[The_Hulk skrev:](https://www.webforum.nu/p/1483389)**
>
> om du vill kolla ifall en radio-button är ikryssad kan du göra på följande
> ...

Ah, tack, börjar förstå detta, ska testa lite.

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/180621-går-det-att-programmatiskt-ange-variabelnamn-och-kolla-värdet
