選択ボックスがあります。オプションは、参照されているCSSファイルを介して異なる色でスタイル設定されています。オプションを選択し、閉じた選択ボックスのテキストの色を選択したオプションの色に変更できるようにします。
<select id="mySelect" class="yellowText">
<option class="greenText" value="Apple" >Apple</option>
<option class="redText" value="banana" >Banana</option>
<option class="blueText" value="grape" >Grape</option>
</select>
バナナを選択すると、テキストが黄色から赤に変わるはずです。
私が試してみました:
onchange="this.style.color = this.options[this.selectedIndex].style.color;"
ただし、これはHTMLドキュメント内のオプションタグ内でスタイルを定義した場合にのみ機能します。
JavaScriptも試しました。
function setSelectColor(thisElement){
var thisElem = document.getElementById(thisElement);
var thisOption = thisElem.options[thisElem.selectedIndex];
var newColor = getStyle(thisOption,"color");
alert("New Color: "+ newColor);
}
しかし、これは常に色:白を返します。 getStyle関数は、私が使用する他のすべての場所で機能するので、それが問題だとは思わない。
私はこのまさにウェブサイトからgetStyleを得ました:
function getStyle(oElm, strCssRule){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
}
else if(oElm.currentStyle){
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}
JavaScriptでこれを解決するにはどうすればよいですか?
これを試して:
.greenText{ background-color:green; }
.blueText{ background-color:blue; }
.redText{ background-color:red; }
<select
onchange="this.className=this.options[this.selectedIndex].className"
class="greenText">
<option class="greenText" value="Apple" >Apple</option>
<option class="redText" value="banana" >Banana</option>
<option class="blueText" value="grape" >Grape</option>
</select>
ONE COLOR CASE-CSSのみ
のみ選択したオプションの色を特定のものに設定したかった私の経験を登録するだけです。
私は最初にCSSで選択したオプションの色のみを設定しようとしましたが、成功しませんでした。
次に、いくつかの組み合わせを試した後、SCSSでこれが機能しました。
select {
color: white; // color of the selected option
option {
color: black; // color of all the other options
}
}
CSSのみを使用した実際の例を見てみましょう。
select {
color: yellow; // color of the selected option
}
select option {
color: black; // color of all the other options
}
<select id="mySelect">
<option value="Apple" >Apple</option>
<option value="banana" >Banana</option>
<option value="grape" >Grape</option>
</select>
異なる色の場合、選択したオプションに応じて、jsを処理する必要があります。
このようにすることができます。
[〜#〜] js [〜#〜]
var select = document.getElementById('mySelect');
select.onchange = function () {
select.className = this.options[this.selectedIndex].className;
}
[〜#〜] css [〜#〜]
.redText {
background-color:#F00;
}
.greenText {
background-color:#0F0;
}
.blueText {
background-color:#00F;
}
リストを白にする場合は、option { background-color: #FFF; }
を使用できます。
[〜#〜] html [〜#〜]
<select id="mySelect" class="greenText">
<option class="greenText" value="Apple" >Apple</option>
<option class="redText" value="banana" >Banana</option>
<option class="blueText" value="grape" >Grape</option>
</select>
これはselect
であるため、何かを選択する必要があるので、.yellowText
を選択なしとして使用するのは意味がありません。
JQueryコード:
$('#mySelect').change(function () {
$('#mySelect').css("background", $("select option:selected").css("background-color"));
});
これにより、select
のbackground-color
選択したoption
のbackground-color
。