webForumDet fria alternativet

Välja rad i select

6 svar · 769 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 447 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. 20037 630 inlägg
#2

selectedIndex på objektet för option-elementet.

Erik JuhlinMedlem sedan maj 20007 625 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 484 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 528 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. 20037 630 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 528 inlägg
#7

Stabilt, funkar ju mycket bättre, tack!

372 ms totalt · 5 externa anrop · cache AV · v20260730165559-full.0b955084
0 ms — hämta statistik (cache)
125 ms — slå upp tråd (db)
0 ms — hämta forumlista (cache)
121 ms — hämta inlägg (db)
123 ms — hämta bilagor (db)