webForumDet fria alternativet

array.reverse()

3 svar · 275 visningar · startad av Web-Tor

Web-TorMedlem sedan nov. 200013 890 inlägg
#1

Jag vill vända på värdena i en select-ruta. Problemet är att reverse() inte funkar i följande kod:

 <script type="text/javascript">
	function c(sel){
		opt=sel.options;
		opt.reverse(); // « Varför funkar inte reverse()?

			for (var ii=0; ii<opt.length; ii++){
				alert(opt[ii].text) // « Här vill jag få ut 3,2,1 istället för 1,2,3
			}

	}
</script>

<select id="s" multiple="multiple">
	<option>1</option>
	<option>2</option>
	<option>3</option>
</select>

<button onclick="c(s)">Click</button>

Jag tror att felet ligger i att opt inte är en array men jag vet inte riktigt...

GlitterMedlem sedan juli 2003465 inlägg
#2

Varför inte göra for loopen baklänges?

Peter SMedlem sedan dec. 20025 483 inlägg
#3

options är helt enkelt ingen Array. Om din metod fungerade skulle det i praktiken innebära att DOM-strukturen ändrades = <option>s spegelvändes på plats, vilket i och för sig vore rätt coolt.

Web-TorMedlem sedan nov. 200013 890 inlägg
#4

Glitter skrev:

Varför inte göra for loopen baklänges?

Det var naturligtvis dagens (eller gårdagens) bästa förslag.

Peter S skrev:

options är helt enkelt ingen Array

...som jag misstänkte. :l

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