webForumDet fria alternativet

Välja rad i select

6 svar · 769 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 427 inlägg
#1

Jag vet värdet (value) på det "option" i en select som jag vill välja med JavaScript, men jag vet inte vilket index det har. Måste jag loopa igenom alla options för att ta reda på indexet, eller finns det ett smidigare sätt?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

selectedIndex på objektet för option-elementet.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#3

Ja, du måste loopa igenom selectlistan.

Exempel:

<script type="text/javascript">
function selectOption(sel, val)
{
	for (var i = 0; i < sel.options.length; i++)
		if (val == sel.options[i].value)
			sel.options[i].selected = true;
}
</script>

<form name="frm">
<select name="foo" multiple>
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
	<option value="2">2</option>
</select>
<input type="button" onClick="selectOption(document.frm.foo, '2');">
</form>
Peter SMedlem sedan dec. 20025 483 inlägg
#4

Om värdet (value) är unikt för varje option kan du, när du loopar(?) ut dessa, tilldela dem ett id-attribut (eller name-attribut) med samma värde och sedan, med Eriks kod, använda:

function selectOption(sel, val)
{
  sel.options.namedItem(val).selected = true;
}
MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

Tjena,
Jag använder ovanstående funktion för att ange startvärde för en select.
Följande kod har jag gjort:

<script type="text/javascript">
	var ntype = '[red]ext[/red]';
	if(!ntype=='int' || !ntype=='ext'){
		var nload = 'int';
	}else{
		var nload = ntype;
	}
	[red]selectOption(document.getElementById('selected_item'), nload);[/red]
	window.onload=function(){ load_news(nload); };
</script>
<div id="main-content">
<select id="selected_item" onchange="load_news(document.getElementById('selected_item').options[document.getElementById('selected_item').selectedIndex].value);">
<option value="int">View Internal News</option>
<option value="ext">View External News</option>
</select><br />
<input type="button" value="Add new" onclick="window.location.href='news-add.asp';" class="form-button" style="margin: 0px 15px 15px 15px;" />
</div>
<div class="clear-row height-10px">&nbsp;</div>

Tanken är att jag med en querystring, ska kunna ange vilket värde som ska vara förvalt i selectlistan.

Det funkar inte, får:
Fel: sel has no properties
Källkodsfil: /js/script-default.js
Rad: 139

Förslag på vad som kan vara fel?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Du försöker komma åt selecten innan formuläret är skapat. Flytta hela script-blocket till någonstans efter select-taggen, eller (bättre) flytta in koden till din inline-funktion för window.onload.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

Stabilt, funkar ju mycket bättre, tack!

133 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)