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?
Välja rad i select
6 svar · 769 visningar · startad av Skarre
selectedIndex på objektet för option-elementet.
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>
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;
}
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"> </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?
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.
Stabilt, funkar ju mycket bättre, tack!