webForumDet fria alternativet
Logga in / Bli medlem

Strul med Select

JavaScript

15 svar · 271 visningar · startad av fundrusse

Medlem sedan jan. 2002286 inlägg
Trådstart#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\>
Medlem 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å

Medlem sedan dec. 20025 483 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>

:)

Medlem sedan jan. 2002286 inlägg
#4

Får inte det att funka d heller

Medlem sedan dec. 20025 483 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--;
	}
};

:)

Medlem 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>*

Medlem sedan dec. 20025 483 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]

:)

Medlem sedan jan. 2002286 inlägg
#8

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

Medlem 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!

Medlem sedan dec. 20025 483 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").

:)

Medlem sedan jan. 2002286 inlägg
#11

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

Medlem sedan jan. 2002286 inlägg
#12

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

Medlem sedan dec. 20025 483 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.

:)

Medlem 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

Medlem sedan dec. 20025 483 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);
};

:)

Medlem sedan sep. 2001105 inlägg
#16

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

269 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)