webForumDet fria alternativet

Välja rad i select

JavaScript

6 svar · 769 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#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?

Medlem sedan aug. 20039 340 inlägg
#2

selectedIndex på objektet för option-elementet.

Medlem 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>
Medlem 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;
}
Medlem 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?

Medlem sedan aug. 20039 340 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.

Medlem sedan feb. 20034 441 inlägg
#7

Stabilt, funkar ju mycket bättre, tack!

252 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)