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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1022閲覧

selectでchangeからの動作をクッキー保存後も再選択せず動作させたい

auyaa

総合スコア3

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2020/07/11 04:04

編集2020/07/11 04:07

下記のように、セレクトでdiv内の文字色を変更するフォームを作っています。
selectの選択はクッキー保存されるようになっており、最初に選択すると文字色が変化します。再度ページを訪れた際、selectは前回選択したものになっているものの、div内の文字色が変更されません。(別のoptionを一度選択してから、再選択すれば文字色も変わる)
これを最初から選択されている状態で文字色が変わるようにするにはどうしたらよいでしょうか?

HTML

<select id="color"> <option value="default">色選択</option> <option value="red">赤</option> <option value="blue">青</option> </select> <div id="comment">文字色を変更させたい文章</div>

JS

$(function(){
$("#color").on('change', function(){
if($(this).val() =="red"){
$("#comment").css("color","#ff0000");
}
if($(this).val() =="blue"){
$("#comment").css("color","#0000ff");
}
});
});

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

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

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

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

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

guest

回答2

0

ベストアンサー

javascript

1$(function() { 2 // セレクトボックスが変更されたときにdivの文字色を変える処理 3 $("#color").on('change', function() { 4 if ($(this).val() == "red") { 5 $("#comment").css("color", "#ff0000"); 6 } 7 if ($(this).val() == "blue") { 8 $("#comment").css("color", "#0000ff"); 9 } 10 }); 11});

現在auyaaさんが記述している処理は
「セレクトボックスが変更されたときにdivの文字色を変える処理」
だけです。
「セレクトボックスで今選択されている項目に合わせた色にdivの文字色を変える処理」
を最初(ページ表示時)に一回実行することで目的が達成できるかと思います。

今書かれてらっしゃるjavascriptの処理だけで実現可能(新たな記法、メソッド等は必要ない)ですので考えてみてください。

----- 以下コメントを受けて追記 -----
一番シンプルな方法としては、以下のようになるかと思います。

javascript

1$(function () { 2 // 最初に「セレクトボックスが変更された時に行う処理」と全く同じ処理を行って文字色を変更する 3 /* ここで$(this)を使うとhtml全体(厳密にはdocument要素)が取得されてしまうので 4 明示的に$("#color")と指定する*/ 5 if ($("#color").val() == "red") { 6 $("#comment").css("color", "#ff0000"); 7 } 8 if ($("#color").val() == "blue") { 9 $("#comment").css("color", "#0000ff"); 10 } 11 12 // セレクトボックスが変更されたときにdivの文字色を変える処理 13 $("#color").on('change', function () { 14 if ($(this).val() == "red") { 15 $("#comment").css("color", "#ff0000"); 16 } 17 if ($(this).val() == "blue") { 18 $("#comment").css("color", "#0000ff"); 19 } 20 }); 21});

同じ処理なので、関数にまとめて以下のようにしてもいいかもしれません。

javascript

1$(function () { 2 // 最初に「セレクトボックスが変更された時に行う処理」と全く同じ処理を行って文字色を変更する 3 /* ここで$(this)を使うとhtml全体(厳密にはdocument要素)が取得されてしまうので 4 明示的に$("#color")と指定する*/ 5 setColor($("#color").val()); 6 7 // セレクトボックスが変更されたときにdivの文字色を変える処理 8 $("#color").on('change', function () { 9 setColor($(this).val()); 10 }); 11}); 12 13function setColor(colorName) { 14 if (colorName == "red") { 15 $("#comment").css("color", "#ff0000"); 16 } 17 if (colorName == "blue") { 18 $("#comment").css("color", "#0000ff"); 19 } 20}

投稿2020/07/11 04:28

編集2020/07/11 06:44
PgMidori

総合スコア184

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

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

auyaa

2020/07/11 05:35

ありがとうございます。 「セレクトボックスで今選択されている項目に合わせた色にdivの文字色を変える処理」の記述がわかりません…。buttonクリックなんかを挟めば可能でしたが、なしで実装できるのでしょうか。
PgMidori

2020/07/11 06:45

回答に追記しました。ご確認ください。
auyaa

2020/07/11 15:20

ありがとうございます。できました。たいへん助かりました…!
guest

0

質問の中にcookieの記載がないので回答のしようがありませんが
cookieはめんどうなのでjQueryをつかっているならライブラリに任せてしまいます

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> 3<script> 4$(function(){ 5 $("#color").on('change', function(){ 6 var color=$(this).val(); 7 $("#comment").css("color",color); 8 $.cookie("color",color); 9 }).val($.cookie("color")).trigger('change'); 10}); 11</script> 12 13<select id="color"> 14<option value="default">色選択</option> 15<option value="red"></option> 16<option value="blue"></option> 17</select> 18 19<div id="comment">文字色を変更させたい文章</div>

投稿2020/07/11 04:19

yambejp

総合スコア114829

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

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

auyaa

2020/07/11 05:23

ありがとうございます。サポートが終了しているフリーCGIの入力フォームを編集しており、知識がないためperlでCookieがどうなっているのかわかりません…。 またcssの文字色指定はredやblueではなくカラーコードで入力したいため、上記ではできませんでした。ありがとうございました。
yambejp

2020/07/11 14:25

どうなっているかわからないものはどうにもならないでしょう ほんとにperlがクッキーを保存しているかどうかもあやしいです
auyaa

2020/07/11 15:21

cookie関与不要でできるご回答をいただけました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問