---
title: "document.getElementById(name) hittar inte div:en inne i en form"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/175183-document-getelementbyid-name-hittar-inte-div-en-inne-i-en-form"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "haider"
published: "2008-11-05T19:51:33.000Z"
updated: "2008-11-11T12:56:00.000Z"
replies: 13
views: 1044
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/175183-document-getelementbyid-name-hittar-inte-div-en-inne-i-en-form"
---

# document.getElementById(name) hittar inte div:en inne i en form

## #1 — haider, 2008-11-05T19:51Z

Hallå,

när jag använder mig av document.getElementById(name) så hittar den inte div:en med det angivna namnet och jag misstänker att det är för att den befinner sig inne i en form-tagg.

Har för mig att jag stötte på detta problem innan, men minns inte hur lösningen såg ut.

Jag skulle bli väldans glad om någon kunde hjälpa mig vidare :)

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

## #2 — haider, 2008-11-05T20:00Z

rättelse: det är ingen div utan en input-tag som befinner sig i form-taggen.

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

## #3 — Peter S, 2008-11-05T20:21Z

Det skall inte vara några problem att hitta ett element i ett formulär med getElementById.

Visa lite kod så skall vi nog hitta vart skon klämmer :)

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

## #4 — haider, 2008-11-05T21:10Z

Hallå Peter:

Javascriptet:
Problemet börjar antingen vid första eller andra raden.

```
function checkEmail(name) {
	var input = document.getElementById(name);
	input.value = input.value.replace(/^\s+|\s+$/g, '');
	if (name != "email") {
		var first = document.getElementById("email");
		first.value = first.value.replace(/^\s+|\s+$/g, '');
		if (first.value == input.value && input.value != null && input.value.length > 4 && input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/))
			setStatus(name, 'good');
		else if (input.value.length <= 4)
			clearField(name);
		else setStatus(name, 'bad');
	} else {
		if (input.value != null && input.value.length > 4 && input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/))
			setStatus(name, 'good');
		else if (input.value.length <= 4)
			clearField(name);
		else setStatus(name, 'bad');
	}

}
```

En input som befinner sig inne i en \<form\> tag. Ska form taggen ha en ID?

```
<input onChange="checkEmail('email');" onKeyUp="checkEmail('email,');" name="email" type="text" id="email"/>
```

tillägg: när jag debuggar genom att klämma in en alert(input) så säger den "null", precis som IE:s felmeddelande.

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

## #5 — nitro2k01, 2008-11-05T21:28Z

> **haider skrev:**
>
> En input som befinner sig inne i en \<form\> tag. Ska form taggen ha en ID?
>
>
> ```
> <input onChange="checkEmail('email');" onKeyUp="checkEmail('email,');" name="email" type="text" id="email"/>
> ```

Det är inte fel varken att ha med eller utelämna id för ett form-element. Däremot är det behändigt, eftersom man kan använda document.getElementById. Den funktionen funkar bara på id, inte på name. Vill du plocka ut ett visst element som bara har ett name ska du använda document.getElementsByName("namnet")\[0\]. 
Kan det vara så att du har glömt att lägga till id för något element?

> **haider skrev:**
>
> tillägg: när jag debuggar genom att klämma in en alert(input) så säger den "null", precis som IE:s felmeddelande.

Pröa även att alerta name för att se om du verkligen får det name du tror att du får.

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

## #6 — Gislaved, 2008-11-05T23:36Z

onKeyUp="checkEmail('email,');" ska kanske vara onKeyUp="checkEmail('email');"

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

## #7 — Duffer, 2008-11-06T01:04Z

Ett tips till om du vill göra det lätt för dig kan vara att köra med this istället, då skickar du elemented direkt vid varje event så slipper du leta upp det varje gång.

\<input onChange="checkEmail(this);" onKeyUp="checkEmail(this);" name="email" type="text" id="email"/\>

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

## #8 — haider, 2008-11-06T18:40Z

tack alla!

det var faktiskt Gislaved som upptäckte felstavningen. På något sätt kom det in ett kommatecken som ställde till det för mig.

Duffer: jag gillar ditt förslag med, att köra med this. Däremot funkar det inte i detta fall.
Är det för att scriptet börjar så här?
var input = document.getElementById(name);

Eller?

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

## #9 — nitro2k01, 2008-11-06T19:09Z

Ja. Inom javascript-ramverk är det populärt att lägga in en $-funktion som tar vilketdera format och konverterar till ett objekt.

```
function $(n){
if ('object' == typeof n)
  return n;
else
  return document.getElementById(n);
}

....

var input = $(name);
```

Vips kan du använda en sträng eller en objekt-referens. (T ex this)

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

## #10 — haider, 2008-11-06T19:28Z

Jo, men om vi tittar på just det scriptet, betyder det att nedanstående rad är ogiltig om jag har kört med "this" (utan citatstecken förstås):
var input = document.getElementById(name);

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

## #11 — nitro2k01, 2008-11-06T22:12Z

> **haider skrev:**
>
> Jo, men om vi tittar på just det scriptet, betyder det att nedanstående rad är ogiltig om jag har kört med "this" (utan citatstecken förstås):
> var input = document.getElementById(name);

Precis. document.getElementById vill ha en sträng som argument. Men som sagt, om du använder min metod så kan du använda en sträng elelr this på olika platser i HTML-koden om du vill/behöver.

```
[B]function $(n){
if ('object' == typeof n)
  return n;
else
  return document.getElementById(n);
}[/B]

function checkEmail(name) {
	[B]var input = $(name);[/B]
	input.value = input.value.replace(/^\s+|\s+$/g, '');
	if (name != "email") {
		var first = document.getElementById("email");
		first.value = first.value.replace(/^\s+|\s+$/g, '');
		if (first.value == input.value && input.value != null && input.value.length > 4 && input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/))
			setStatus(name, 'good');
		else if (input.value.length <= 4)
			clearField(name);
		else setStatus(name, 'bad');
	} else {
		if (input.value != null && input.value.length > 4 && input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/))
			setStatus(name, 'good');
		else if (input.value.length <= 4)
			clearField(name);
		else setStatus(name, 'bad');
	}

}
```

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

## #12 — haider, 2008-11-08T10:05Z

Tack än en gång Nitro,

Lösningen blev visserligen lite overkill för min del.
Jag ska fortsätta köra med lösningen som den är och lovar att se upp med felstavningar framöver :)

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

## #13 — Duffer, 2008-11-10T15:32Z

> **haider skrev:**
>
> Duffer: jag gillar ditt förslag med, att köra med this. Däremot funkar det inte i detta fall.
> Är det för att scriptet börjar så här?
> var input = document.getElementById(name);
> 
> 
> Eller?

Verkade bli lite missförstånd i koden jag tänkte inte vi skulle bygga ett helt ramverk som kunde ta vilken parametertyp som helst, jag menade bara att om du skickar in this behöver du inte köra document.getElementById() utan då är this redan elementet du är ute efter (eller ja i detta fall blir det ju name vilket du lämpligen ändrar till input isåfall) ;-)

Mvh

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

## #14 — nitro2k01, 2008-11-11T12:56Z

> **Duffer skrev:**
>
> Verkade bli lite missförstånd i koden jag tänkte inte vi skulle bygga ett helt ramverk som kunde ta vilken parametertyp som helst, jag menade bara att om du skickar in this behöver du inte köra document.getElementById() utan då är this redan elementet du är ute efter (eller ja i detta fall blir det ju name vilket du lämpligen ändrar till input isåfall) ;-)
> 
> Mvh

En funktion är så klart inte ett ramverk, men däremot är den funktionen jag postade användbar. Inkludera den överallt så att du vet att den finns så kommer du nog få nytta av den förr eller senare.

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/175183-document-getelementbyid-name-hittar-inte-div-en-inne-i-en-form
