質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

2772閲覧

セレクトボックス選択と当時に、指定クラスの色を変える方法

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/02/01 19:56

編集2018/02/01 19:59

選択された値に応じて、指定した場所の色を変える機能がほしくてあれこれ模索しています。

次のようなイメージですが、さっぱり動いてくれません。
https://jsfiddle.net/vL5Lmmtc/

html

1<select class="select_color" name="onamae" data-required="no" data-type="select"> 2<option value="blue">ブルー</option> 3<option value="red">レッド</option> 4<option value="green">グリーン</option> 5</select> 6<div class="change">色よ変われ!</div>

javascript

1<sctipt> 2$('select').change(function(){ 3var num = document.onamae.selectedIndex; 4var str = document.onamae.options[num].value; 5document.getElementsByClassName("change")[0].css('background','str') 6}); 7</script>

または下記のように書けば1回は変更できるのですけれど、それじゃダメなのです。
https://jsfiddle.net/23fgea8L/

javascript

1<sctipt> 2$('select').change(function(){ 3$(".change").css('background-color','#f00') 4}); 5</script>

お詳しい方、ご教示頂けませんでしょうか。。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

元々がclassで色付けする仕様であればcss()メソッドで色を変えるより
クラスを付け替えるほうがよいのでは?

CSS

1.red{ background-Color: red;} 2.blue{ background-Color: blue;} 3.green{ background-Color:green;} 4.change { 5 color: #fff; 6 font-weight: bold; 7 width: 100px; 8 margin: 20px; 9}

javascript

1$(function(){ 2 $('select').on('change',function(){ 3 $('.change').removeClass('red blue green').addClass($(this).val()); 4 }); 5});

HTML

1<select class="select_color" name="onamae" data-required="no" data-type="select"> 2<option value="blue">ブルー</option> 3<option value="red">レッド</option> 4<option value="green">グリーン</option> 5</select> 6<div class="change blue">色よ変われ!</div>

追記

.kokomo:beforeの色を変える

css

1.red{ background-Color: red;} 2.blue{ background-Color: blue;} 3.green{ background-Color:green;} 4.beforered:before{background-Color: red;} 5.beforeblue:before{ background-Color: blue;} 6.beforegreen:before{ background-Color:green;} 7 8.box {margin: 20px;} 9.change { 10 color: #fff; 11 font-weight: bold; 12 width: 200px; 13 margin: 20px; 14} 15.kokomo { 16 color: #000000; 17 margin: 20px; 18 font-weight: bold; 19} 20.kokomo:before { 21content: ''; 22 position: absolute; 23 top: 0; 24 width: 20px; 25 height: 20px; 26 border-radius: 50%; 27}

javascript

1$(function(){ 2 $('select').on('change',function(){ 3 $('.change').removeClass('red blue green').addClass($(this).val()); 4 $('.kokomo').removeClass('beforered beforeblue beforegreen').addClass("before"+$(this).val()); 5 }); 6});

HTML

1<div class="box"> 2<select class="select_color" name="onamae" data-required="no" data-type="select"> 3<option value="blue">ブルー</option> 4<option value="red">レッド</option> 5<option value="green">グリーン</option> 6</select> 7</div> 8 9<div class="change blue">ここの色が変わる!</div> 10<div class="kokomo beforeblue">ここも</div>

投稿2018/02/02 01:23

編集2018/02/02 07:27
yambejp

総合スコア114814

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/02 07:13

ありがとうございます。クラス変えの方が軽いのですね!感謝です。 ところで、追加で申し訳ございません。 beforeにだけ色を付けている場合、どうすればよろしいでしょうか? このようなケースです。 https://jsfiddle.net/10ub0j58/ 「kokomo」は「kokomo::before」にだけ色を変えたいのですけれど、今回の書き方だと「kokomo」も変わってしまうので、苦戦中です。。
yambejp

2018/02/02 07:29

クラスの指定を変えないとだめでしょうね kokomoにblueとか付けるとkokomo自体に色がつくので ほんたいに影響のないクラスを設定してあげる必要があるでしょう
退会済みユーザー

退会済みユーザー

2018/02/02 07:53

「ザ★感無量」でございます。。 そこを変えるのですね。まったく発想できませんでした。 どうもありがとうございます!! 金曜日もあと少し♪どうぞよい週末をお過ごしください(*´ω`)
guest

0

jQuery使うなら以下。

$('select').change(function(){ // jQueryは基本この関数内の[this]はイベントが起こった要素。 // この場合は、[select]要素 // ※アロー関数の場合は別。 // selectのvalue すなわち現在選択されている select内のoption要素のvalue値を // .changeを持つ要素のインラインスタイル[background-color]に設定する。 // スタイル変更はコスト高いので、addClass等クラス名付与の方が若干 $(".change").css('background-color',this.value) });

ただ、これだとjQueryが走った以降出てきた、追加されたselect要素は考慮されないし
全てのselect要素にイベント(処理)がついてしまう。
また、[.change]が複数ある場合は、そのすべてが変更されてしまう。

以下なぜ悪いかの理由

$('select').change(function(){ // これだと毎回 .changeの値が '#f00'に設定されてしまう。すなわち赤色 $(".change").css('background-color','#f00') });
$('select').change(function(){ // form内にあるわけではないのでname指定ができない var num = document.onamae.selectedIndex; // 上記で取得できてないので。 var str = document.onamae.options[num].value; // 根本的な問題として、Elementには css というメソッドはない // jQuery利用で.changeを取得したと仮定して、ここで変数 str ではなく 文字列 str // を用いているので、backgroundにstrという文字をあては document.getElementsByClassName("change")[0].css('background','str') });

投稿2018/02/01 23:41

kanimaru

総合スコア1013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/02 07:58 編集

「スタイル変更」はコスト高いのですね。ご指摘感謝です。 今回はそのご指摘に沿ってご回答くださったyambejpさんをベストアンサーにさせて頂きました。 (kanimaruさんは私の質問にあった「スタイル変更」にせっかくお応え下さったのに、すみません。笑) コードの上に説明書いてくれて嬉しいです。ありがとうございます!
guest

0

jQueryをお使いのようですので… $('select').val() で選択中のvalueが取得できます。

javascript

1$('select').change(function(){ 2 var color = $(this).val(); 3 $(".change").css('background-color', color); 4});

投稿2018/02/01 23:40

CODEISLE

総合スコア251

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/02 07:57

ありがとうございます。 私の質問では「スタイル変更」を求めておりますくせに恐縮なのですけれど、今回はより軽快であるらしい「クラス変更」の方法をご提示くださった方がいらしたので、ベストアンサーは譲ってあげてくださいませ。<(_ _)> ベストアンサーの代わりに「1番すばやいで賞」を進呈します★笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問