M.E. ist da jeweils ein Leerzeichen zuviel vor den Punkten…
Was aber nichts an der Aussage ändert. Das GTK malt die Box: Ein statischer gelber Hintergrund geht. Das das rot für die gewählten Boxen ist bestenfalls temporär zu sehen...
select option[selected=true] {
background-color:red;
}
geht auch nicht, obwohl die Console diese Eigenschaft anzeigt und keinen Fehler meldet.
Das Spielzeug:
<!DOCTYPE html>
<html>
<head>
<title>Select</title>
<style>
select option.sel {
background-color:red;
}
select option {
background-color:yellow;
}
</style>
</head>
<body>
<form>
<select name="m" multiple>
<option>foo</option>
<option>bar</option>
<option>baz</option>
<option>tok</option>
</select>
</form>
<script>
s=document.forms[0].elements["m"];
//s.addEventListener("change", setBgColor );
s.addEventListener("change", setClass );
//s.addEventListener("click", setClass );
//s.addEventListener("blur", set Class );
function setClass( ) {
s=document.forms[0].elements["m"];
//console.log(s);
a=s.options;
//console.log(a);
c=a.length;
//console.log(c);
for (i=0; i<c; i++ ) {
o=a[i];
classes = o.className.split(" ");
if (o.selected) {
if (classes.indexOf("sel") == -1) {
o.classList.add("sel");
console.log( "Klasse zu Option " + i + " hinzugefügt" );
}
} else {
if (classes.indexOf("sel") != -1) {
o.classList.remove("sel");
console.log( "Klasse von Option " + i + " entfernt" );
}
}
console.log(o);
}
}
function setBgColor( ) {
s=document.forms[0].elements["m"];
//console.log(s);
a=s.options;
//console.log(a);
c=a.length;
//console.log(c);
for (i=0; i<c; i++ ) {
o=a[i];
if (o.selected) {
o.style.backgroundColor="red";
} else {
o.style.backgroundColor="yellow";
}
console.log(o);
}
}
</script>
</body>
</html>