webForumDet fria alternativet

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

JavaScript

3 svar · 217 visningar · startad av FlashX

Medlem sedan nov. 19991 033 inlägg
Frågan#1

Jag skulle behöva en snarlik historia som den här 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) 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.

Medlem sedan dec. 20025 483 inlägg
#2

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>

:)

Medlem sedan maj 20023 372 inlägg
#3

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.

Medlem sedan nov. 19991 033 inlägg
#4

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.

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)