---
title: "Ny dropmeny beroende på val i föregående"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/70803-ny-dropmeny-beroende-på-val-i-föregående"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "FlashX"
published: "2003-03-12T06:37:21.000Z"
updated: "2003-03-12T17:20:52.000Z"
replies: 3
views: 221
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/70803-ny-dropmeny-beroende-på-val-i-föregående"
---

# Ny dropmeny beroende på val i föregående

## #1 — FlashX, 2003-03-12T06:37Z

Jag skulle behöva en snarlik historia som den [här](http://javascript.internet.com/forms/dropdown-box-population.html) men den fungerar endast i IE.
Tanken är att hämta värdena från en databas och sedan generera nya droplister beroende på vad man valde i den första. Jag har löst detta genom att ladda om sidan (som [dustin](http://www.dustin.se)) men det är ingen bra lösning just i detta fallet. Smidigast vore att använda javascript men det kanske inte går att lösa den biten så det fungera i t.ex. Mozilla?
Har letat på de ställen där skript brukar finnas men har inte hittat just den varianten.

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

## #2 — Peter S, 2003-03-12T12:22Z

Vad tror du om detta?

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

var List = {
	holder : null,
	toRemove : null,
	subLists : [],

	init : function(holder){
		this.holder = document.forms[ "holder" ];
	},

	add : function(pos){
		var select = document.createElement( "select" );

		for( var i=1; i < arguments.length-1; i+=2 ){
			var option = document.createElement( "option" );
			option.value = i;
			option.innerHTML = arguments[ i+1 ];
			select.appendChild( option );
		}

		this.subLists[ pos ] = select;
	},

	generate : function(o){
		if( this.toRemove != null && this.toRemove != o.selectedIndex )
			this.holder.removeChild( this.subLists[ this.toRemove ] );

		this.holder.appendChild( this.subLists[ o.selectedIndex ] );

		this.toRemove = o.selectedIndex;
	}
};

// Det första värdet anger för vilken position i den ursprungliga 
// listan dessa listor skall genereras. Parametrarna "sprak" anger
// vilket värde respektive alternativ skall ha och "Svemska", "Norska"
// o.s.v. är texten för själva alternativet

List.add(0, "sprak", "Svenska", "sprak", "Norrländska :)");
List.add(1, "sprak", "Norska");
List.add(2, "sprak", "Danska");

window.onload = function(){
	List.init("holder");
};

//-->
</script>

...

<form name="holder">
<select onchange="List.generate(this)">
	<option>Sverige</option>
	<option>Norge</option>
	<option>Danmark</option>
</select>
</form>
```

 :)

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

## #3 — Pellefant, 2003-03-12T12:37Z

Hej FlashX!

Jag är mycket intresserad av hur det går, har försökt göra ett sånt länge, men inte fått det att fungera.

Berätta hur det går för dig.

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

## #4 — FlashX, 2003-03-12T17:20Z

Tack Peter :)
Själva skriptet funkar bra i Mozilla fast det kanske behövs finslipas lite för att funka som menysystem från en databas.  Det måste vara ett tomt värde i början för annars händer inget om t.ex. vill ha det alternativet som visas först. Sedan vet jag inte riktigt hur man lägger till den tredje listen som ska baseras på valet i den andra, fast det kanske jag glömde nämna :)

En annan sak jag funderade på är namnet på den select som skapas. Eftersom valen man gör ska användas för att hämta data från databasen så måste man veta vilken select värdet kommer ifrån.

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/70803-ny-dropmeny-beroende-på-val-i-föregående
