webForumDet fria alternativet

Olika styles på olika <option>

HTML & CSS

20 svar · 639 visningar · startad av nkrantz

Medlem sedan apr. 2002830 inlägg
Frågan#1

Hej,

Frågan har säkert varit uppe förut, men har inte hittat något svar.

Det är så att jag har en select-ruta som innehåller en massa css-klassar så att man skall kunna välja klass på en text man skriver. Vad jag vill göra är att varje option skall ha den klassen som visas.

MEN, jag verkar inte kunna ändra typsnitt eller storlek i optiontagen, bakgrundsfärg och teckenfärg funkar.

Någon som vet?

// Nippe

Medlem sedan dec. 20025 871 inlägg
#2

Typsnitt- och storleksspecifikationer kan du lägga i select-taggen.

Eller vill du ha olika typsnitt/storlekar på olika option-taggar?

Medlem sedan apr. 2002830 inlägg
#3

Japp, olika typsnitt/storlekar på olika options-taggar som finns inom en select-tag...

Medlem sedan apr. 20003 174 inlägg
#4

Nope, det fungerar inte att göra så.

Medlem sedan apr. 2002830 inlägg
#5

x( Det var ju ingen upplyftande sak... Finns det något annat sätt att lösa det på? Med JavaScript, kanske kan göra en dynamisk dropdown med layers eller nåt?

Förslag?

// Nippe

Medlem sedan dec. 20025 871 inlägg
#6

Använd samma dropdown, men lägg en liten ruta (div) med lite text bredvid som förhandsvisning. :) Det är ganska enkelt att lösa med JavaScript. ;)

Medlem sedan apr. 2002830 inlägg
#7

Ah, det var iofs inte så dumt... Ska fixa!

Medlem sedan apr. 2002830 inlägg
#8

Vad heter händelsen när man ändrar värde i en select?

Nu har jag

<option class="default" value="default" onfocus="document.getElementById('preview').className=this.options[this.selectedIndex].value"

Men det kanske inte ska vara onfocus. Dessutom så är det inte selectedIndex jag vill ha, utan jag vill ha det värdet som man just nu markerar i option-tagen..

// Nippe

Medlem sedan apr. 20003 174 inlägg
#9

Ett alternativ annars är ju att styla om HELA drop-menyn att passa efter din valda klass.. ex.

[red]<html>
<head>

	<script type="text/javascript">
	<!--

	function styleMe(i)
	{
		if(i!=='#')
		{
			objSelect = document.getElementById('bar');
			switch (i)
			{
				case'1' : 
				objSelect.style.fontFamily = 'Arial';
				objSelect.style.color = '#FFFF00';
				objSelect.style.backgroundColor='#FF0000';
				break;

				case'2' : 
				objSelect.style.fontFamily = 'Times';
				objSelect.style.color = '#FFFFFF';
				objSelect.style.backgroundColor='#0000FF';
				break;

				case'3' : 
				objSelect.style.fontFamily = 'Verdana';
				objSelect.style.color = '#FFFF00';
				objSelect.style.backgroundColor='#000000';
				break;
			}
		}
	}

	//-->
	</script>

</head>
<body>

	<form id="foo">
		<select id="bar" size="1" style="width: 200px;" onchange="styleMe(this.options[this.selectedIndex].value);">
			<option value="#">Väl här:</option>
			<option value="1">Alternativ 1</option>
			<option value="2">Alternativ 2</option>
			<option value="3">Alternativ 3</option>
		</select>
	</form>

</body>
</html>[/red]
Medlem sedan apr. 20003 174 inlägg
#10

nkrantz skrev:

Vad heter händelsen när man ändrar värde i en select?

[red]onchange="foo();"[/red]
Medlem sedan apr. 2002830 inlägg
#11

Tack Palle, men det blir inte riktikt samma sak. Det är så att jag håller på gör ett artikelhanteringssystem, och när man väljer något i optiontagen så sätts en kod in i min html kod. Därför skulle det vara gött att kunna se hur classen ser ut, innan man applicerar den så att säga...

Medlem sedan nov. 20017 144 inlägg
#12

Funkar detta?
Fick lite tid över... :)

<script type="text/javascript">
<!--

function showhide(id){
	document.getElementById(id).style.display=(document.getElementById(id).style.display=='none')?'block':'none';
};

function mover(id){
        document.getElementById(id).style.background = '#CCCCCC';
};

function mout(id){
        document.getElementById(id).style.background = '#FFFFFF';
};

function changeFont(id){
var val;
if(!id==''){
val="&nbsp;&nbsp;"+id;
}else{
val="&nbsp;&nbsp;Välj något";
}
setTimeout('showhide(\'content_1\');',300);
document.getElementById("myTop").innerHTML=val;
document.f.e.value=id;
};

//-->
</script>

<style type="text/css">

#mySelect{width:150px;border:1px solid black;font-family:verdana;font-size:12px;padding:0;}
.myOptions{margin:20px 0 0 0;padding:2px;cursor:default;}
a{text-decoration:none;color:black;}
.myTop{line-height:15px;}
#arrow{font-family:webdings;width:16px;border:1px solid gray;background:#ccc;text-align:center}

#val1{font-family:arial;}
#val2{font-family:courier new;}
#val3{font-family:comic sans;}
#val4{font-family:times;}
#val5{font-family:symbol;}

</style>

<div id="mySelect">
	<div class="mytop">
		<div style="float:left;cursor:pointer;" id="myTop" onclick="setTimeout('showhide(\'content_1\');',200)">&nbsp;&nbsp;Välj något</div>
		<div style="float:right;" id="arrow"><a href="javascript:void(setTimeout('showhide(\'content_1\');',200));">6</a></div>
	</div>

	<div class="myOptions" style="display:none;" id="content_1">
		<div id="val0" onclick="changeFont('')" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Inget</div>
		<div id="val1" onclick="changeFont(this.innerHTML)" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Arial</div>
		<div id="val2" onclick="changeFont(this.innerHTML)" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Courier new</div>
		<div id="val3" onclick="changeFont(this.innerHTML)" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Comic sans</div>
		<div id="val4" onclick="changeFont(this.innerHTML)" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Times</div>
		<div id="val5" onclick="changeFont(this.innerHTML)" onmouseover="mover(this.id)" onmouseout="mout(this.id)">Symbol</div>
	</div>

</div>

<form name="f">
<input type="text" name="e" id="e" value="">
</form>
Medlem sedan nov. 20017 144 inlägg
#13

Observera mellan_rummet : "java script"

Medlem sedan apr. 2002830 inlägg
#14

Cool... Något sådant borde ju funka, fick lite felmeddelande, men ska jobba vidare på det!

Medlem sedan nov. 20017 144 inlägg
#15

Jesper T skrev:

Observera mellan_rummet : "java script"

Medlem sedan apr. 2002830 inlägg
#16

Jo, jag gjorde det ;) Den klagade på ) på rad 50 bland annat...

Medlem sedan nov. 20017 144 inlägg
#17

Ok, detta forum tar bort backslashar.
Skall vara det på alla dessa:
setTimeout('showhide(\'content_1\');',200)

Medlem sedan apr. 2002830 inlägg
#18

Ah... bra där ;)

Medlem sedan apr. 2002830 inlägg
#19

Funkar PERFEKT! Tackar så mycket!

Medlem sedan nov. 20017 144 inlägg
#20

Kul,
du kan ju ta bort setTimeout om du vill.
Satte till den för att få en liten selectkänsla bara.

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)