webForumDet fria alternativet

Strul med Select

15 svar · 269 visningar · startad av fundrusse

fundrusseMedlem sedan jan. 2002286 inlägg
#1

Ser någon något fel på den här koden...
Får inte den att funka riktigt.

-----------------------------------------------------------------

<script type="text/javascript">
function section_OnChange(tSelectedVal) {
var Selmeny2 = document.forms[0].Category;
SelLst_Clear(Selmeny2);

if( tSelectedVal==0) {
SelLst_Add( Selmeny2, "Välj sektion", "0")
} else if (tSelectedVal==59) {
SelLst_Add( Selmeny2, "DAT", "78")
SelLst_Add( Selmeny2, "Iomega", "79")
} else if (tSelectedVal==60) {
SelLst_Add( Selmeny2, "Monitorer", "81")
SelLst_Add( Selmeny2, "Plasma", "82")
SelLst_Add( Selmeny2, "TFT", "83")
} else if (tSelectedVal==61) {
SelLst_Add( Selmeny2, "Bredband", "84")
SelLst_Add( Selmeny2, "ISDN", "85")
SelLst_Add( Selmeny2, "Modem", "86")
SelLst_Add( Selmeny2, "Tillbehör", "87")
}
}

function SelLst_Add(oObj, tText,tValue) {
var opt = document.createElement("OPTION")
oObj.options.add(opt);
opt.innerText = tText;
opt.value = tValue;
}

function SelLst_Clear(oObj) {
while( oObj.options.length>0) {
oObj.options[0] = null;
}
oObj.selectedIndex = -1;
}
</script>

  \<select size="1" name="Section" onchange="sektion_OnChange(this.options\[this.selectedIndex\].value)" class="search"\> 
  \<option selected value="0"\>Sektioner\</option\>
  \<option value="0"\>------------------------\</option\>
  \<option value="59"\>Backup\</option\>
  \<option value="60"\>Bildskärmar\</option\>
  \<option value="61"\>Bredband & Modem\</option\>
  \</select\>
  \<select size="1" name="Category" class="search"\>
  \</select\>
fundrusseMedlem sedan jan. 2002286 inlägg
#2

oj.. såg att det stog onchange="se"k"tion_OnChange.. men det rättade jag till.. funkar ej ändå

Peter SMedlem sedan dec. 20025 484 inlägg
#3

Jag tog mig friheten att skriva om din kod lite grand ;)

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

function sektion_OnChange(v){
	var Selmeny2 = document.forms[0].Category;
	SelLst_Clear(Selmeny2);

	switch(v){
		case "0":
		SelLst_Add(Selmeny2, "Välj Sektion", 0);
			break;
		case "59":
		SelLst_Add(Selmeny2, "DAT", 78) 
		SelLst_Add(Selmeny2, "Iomega", 79)
			break;
		case "60":
		SelLst_Add(Selmeny2, "Monitorer", 81) 
		SelLst_Add(Selmeny2, "Plasma", 82) 
		SelLst_Add(Selmeny2, "TFT", 83)
			break;
		case "61":
		SelLst_Add(Selmeny2, "Bredband", 84) 
		SelLst_Add(Selmeny2, "ISDN", 85) 
		SelLst_Add(Selmeny2, "Modem", 86) 
		SelLst_Add(Selmeny2, "Tillbehör", 87)
			break;
		default:
			alert("FEL!");
	}
};

function SelLst_Add(o, s, v){
	var option = document.createElement("option");
	option.appendChild(document.createTextNode(s));
	option.value = v;
	o.appendChild(option);
};

function SelLst_Clear(o){
	for(var i=0; i<o.options.length; i++)
		o.removeChild(o.options[i]);
};

//-->
</script>

:)

fundrusseMedlem sedan jan. 2002286 inlägg
#4

Får inte det att funka d heller

Peter SMedlem sedan dec. 20025 484 inlägg
#5

Nu skall det fungera.

function SelLst_Clear(o){
	var i = o.options.length-1;

	while(o.options.length>0){
		o.removeChild(o.options[i]);
		i--;
	}
};

:)

fundrusseMedlem sedan jan. 2002286 inlägg
#6

Nae det går ingen vidare asså
--------------------------------------
<html>

<head>
<script type="text/javascript">
<!--
function section_OnChange(v){
var Selmeny2 = document.forms[0].Category;
SelLst_Clear(Selmeny2);

switch(v){
	case "0":
	SelLst_Add(Selmeny2, "Välj Sektion", 0);
		break;
	case "59":
	SelLst_Add(Selmeny2, "DAT", 78) 
	SelLst_Add(Selmeny2, "Iomega", 79)
		break;
	case "60":
	SelLst_Add(Selmeny2, "Monitorer", 81) 
	SelLst_Add(Selmeny2, "Plasma", 82) 
	SelLst_Add(Selmeny2, "TFT", 83)
		break;
	case "61":
	SelLst_Add(Selmeny2, "Bredband", 84) 
	SelLst_Add(Selmeny2, "ISDN", 85) 
	SelLst_Add(Selmeny2, "Modem", 86) 
	SelLst_Add(Selmeny2, "Tillbehör", 87)
		break;
	default:
		alert("FEL!");
}

};

function SelLst_Add(o, s, v){
var option = document.createElement("option");
option.appendChild(document.createTextNode(s));
option.value = v;
o.appendChild(option);
};

function SelLst_Clear(o){
var i = o.options.length-1;

while(o.options.length\>0){
	o.removeChild(o.options*);
	i--;
}

};
//-->
</script>
</head>

<body>
<select size="1" name="Section" onchange="section_OnChange(this.options[this.selectedIndex].value)" class="search">
<option selected value="0">Sektioner</option>
<option value="0">------------------------</option>
<option value="59">Backup</option>
<option value="60">Bildskärmar</option>
<option value="61">Bredband & Modem</option>
</select>
<select size="1" name="Category" class="search">
</select>
</body>

</html>*

Peter SMedlem sedan dec. 20025 484 inlägg
#7

Du måste lägga alla <select> i en <form>:

[B]<form>[/B]

<select size="1" name="Section" onchange="section_OnChange(this.options[this.selectedIndex].value)" class="search"> 
<option selected value="0">Sektioner</option> 
<option value="0">------------------------</option> 
<option value="59">Backup</option> 
<option value="60">Bildskärmar</option> 
<option value="61">Bredband & Modem</option> 
</select> 
<select size="1" name="Category" class="search"> 
</select> 

[B]</form>[/B]

:)

fundrusseMedlem sedan jan. 2002286 inlägg
#8

Aja det vet jag väl! *host*
hehe tackar ;)

fundrusseMedlem sedan jan. 2002286 inlägg
#9

Hmm tänkte på det.
Om man vill att ett värde skall ha "selected" hur gör man då.

För jag loopar ut scriptet!

Peter SMedlem sedan dec. 20025 484 inlägg
#10

Du skulle kunna göra så här:

.
.
.
case "60": 
SelLst_Add(Selmeny2, "Monitorer", 81) 
SelLst_Add(Selmeny2, "Plasma", 82, [B]true[/B])
SelLst_Add(Selmeny2, "TFT", 83) 
	break;
.
.
.
function SelLst_Add(o, s, v, b){ 
	var option = document.createElement("option"); 
	option.appendChild(document.createTextNode(s)); 
	option.value = v;
	if(b) option.selected = true;
	o.appendChild(option); 
};

Lägg till true som det sista argumentet när du anropar funktionen "SelLst_Add", för det värde du vill skall vara "selected" (i det här fallet "Plasma").

:)

fundrusseMedlem sedan jan. 2002286 inlägg
#11

Får du verkligen det att funka?..
Inte jag

fundrusseMedlem sedan jan. 2002286 inlägg
#12

Du... båda select boxarna skall vara selectade
Dvs Section = Bildskärmar & Category = Plasma

Peter SMedlem sedan dec. 20025 484 inlägg
#13

Om du väljer "Bildskärmar" så blir ju både den och "Plasma" valda. Det är dessa två som "syns" i selectboxarna.

:)

fundrusseMedlem sedan jan. 2002286 inlägg
#14

Aha du tänker så...
Jag tänkte att rätt section och kategori skall vara selectade när man laddar sidan.. så att båda boxarna är ifyllda när man öppnar sidan

Peter SMedlem sedan dec. 20025 484 inlägg
#15

Lägg den metod som motsvarar det element för vilket du har satt till "selected" innanför <script> enligt följande:

window.onload = function(){
     .....
};

Om du t.ex. har satt "Sektioner" till att vara vald, så skulle du kunna göra så här:

window.onload = function(){
     SelLst_Add(document.forms[0].Category, "Välj Sektion", 0);
};

:)

CoreXMedlem sedan sep. 2001114 inlägg
#16

Ja jävlar.. nu funkar det som jag vill här..
Bockar & bugar

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb