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

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

新規登録して質問してみよう
ただいま回答率
85.47%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

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

Q&A

2回答

660閲覧

jquery.cookie.jsでのクッキーセットと発動のさせ方について(サイトの背景変更で使用)

yuiran

総合スコア15

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

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

0グッド

0クリップ

投稿2022/07/21 15:34

慶応のサイト模写でサイトの背景色の変更のコードをjQueryで書いています。

背景は通常は白で、黒をクリックすると黒くなります。
その状態で、サイトを再読込すると、背景が黒であるという情報がクッキーに保存されていて
黒背景のサイトが表示されます。

これをjQueryで再現したいのですが、自分で試行錯誤してみましたができなかったので
お知恵をいただけましたら大変助かります。

クッキー設定がないもので背景変更がうまく行っているコード

HTML

1<div class="col-md-4"> 2 <div class="upper-h"> 3 <div class="uh-right mb-3"> 4 <ul class="list-inline list-unstyled text-right"> 5 <li class="list-inline-item"><a href="#" class="text-dark border-right pr-4"><u>サイトマップ</u></a></li> 6 <li class="list-inline-item pt-3 pb-3"><a href="#" class="text-dark border-right pl-4 pr-4"><u>English</u></a></li> 7 <li class="list-inline-item pt-3 pb-3"><a href="#" class="text-dark pl-4"><u>採用情報</u></a></li> 8 </ul> 9 10 <dl class="textSize list-inline text-right"> 11 <dt class="list-inline-item pb-1 align-bottom" ><small>文字<br>サイズ</small></dt> 12 <dd id="textLarge" class="list-inline-item border p-2 mr-0"><a href="#">拡大</a></dd> 13 <dd id="textNormal" class="textDefault list-inline-item border p-2"><a href="#">標準</a></dd> 14 <dt class="list-inline-item pb-1 align-items-center" ><small>背景変更</small></dt> 15 <dd class="list-inline-item border p-2 mr-0"><a id="black" href="#">黒</a></dd> 16 </dl>

jQuery

1var $fblackback = $('.base,.header-menu,.nvb-colour,.dropdown-menu,.thr-dropdown-m,.taisetu-back,.for-purpose,.for-category,.tab-area,.nav-pills,.tab-content, .panel_area,.card-body,.admap_outer,.rec_infoarea,.access,.bottom-slider,.for-category ul,.card,#header-text'); 2 var $lfmandcb = $('.upper-h .uh-right dl dd a,.nav-link,.nav-link.active,.tcard .btn-link,.fp-item a'); 3 var $bluetowhf = $('li a,.link_list a'); 4 5 6$(function(){ 7 $('#black').on('click',() => { 8 if ($fblackback.hasClass('blackback')){ 9 $fblackback.removeClass('blackback'); 10 $('#headerlogo').find('img').attr('src', '../img/logo_01.png'); 11 $("#black").text($("#black").text().replace("白", "黒")); 12 $lfmandcb.css('color','#212529'); 13 $bluetowhf.css('color','#007bff'); 14 15 // クッキー破壊 16 17 18 19 } 20 else{ 21 22 $fblackback.addClass('blackback'); 23 $("#black").text($("#black").text().replace("黒", "白")); 24 $('#headerlogo').find('img').attr('src', '../img/blackverlogo.png'); 25 $lfmandcb.css('color','#fff'); 26 $bluetowhf.css('color','#fff'); 27 28 // クッキーセット 29 30 31 } 32 33 }); 34 }); 35

自分で書いてみたけれどクッキー設定や保存、破壊などができていないコード。
このコードだと、背景変更もできなくなってしまいました。

jQuery

1var $fblackback = $('.base,.header-menu,.nvb-colour,.dropdown-menu,.thr-dropdown-m,.taisetu-back,.for-purpose,.for-category,.tab-area,.nav-pills,.tab-content, .panel_area,.card-body,.admap_outer,.rec_infoarea,.access,.bottom-slider,.for-category ul,.card,#header-text'); 2 var $lfmandcb = $('.upper-h .uh-right dl dd a,.nav-link,.nav-link.active,.tcard .btn-link,.fp-item a'); 3 var $bluetowhf = $('li a,.link_list a'); 4$(function(){ 5 if($.cookie("havingb")){ 6 7 $('#black').on('click',() => { 8 if ($fblackback.hasClass('blackback')){ 9 $fblackback.removeClass('blackback'); 10 $('#headerlogo').find('img').attr('src', '../img/logo_01.png'); 11 $("#black").text($("#black").text().replace("白", "黒")); 12 $lfmandcb.css('color','#212529'); 13 $bluetowhf.css('color','#007bff'); 14 $.cookie("havingb",""); 15 // クッキー破壊 16 } 17 else{ 18 19 $fblackback.addClass('blackback'); 20 $("#black").text($("#black").text().replace("黒", "白")); 21 $('#headerlogo').find('img').attr('src', '../img/blackverlogo.png'); 22 $lfmandcb.css('color','#fff'); 23 $bluetowhf.css('color','#fff'); 24 $.cookie("havingb", $fblackback.hasClass('blackback')); 25 // クッキーセット 26 } 27 }); 28 } 29 else{ 30 31 } 32 33 });

背景を黒に変更したあとにサイトを再読込した時に、黒背景の状態で読み込めるようにするにはどのようにクッキーセットのjQueryをかけばいよいでしょうか?

教えていただきますよう、どうぞ、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

jquery.cookie.jsは2014年以来更新されておらずsameSiteオプションの指定などできません。
ご利用は控えてjs.cookie.jsをご利用ください

javascript

1<script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script> 2<script> 3window.addEventListener('DOMContentLoaded', ()=>{ 4 const bs=document.body.style 5 let bgColor=Cookies.get('bgColor')||"white"; 6 bs.backgroundColor=bgColor; 7 document.querySelectorAll('[data-bgcolor]').forEach(x=>{ 8 x.addEventListener('click',()=>{ 9 bgColor=x.dataset.bgcolor; 10 bs.backgroundColor=bgColor; 11 Cookies.set('bgColor',bgColor); 12 }); 13 }); 14}); 15</script> 16<input type="button" value="白" data-bgcolor="white"> 17<input type="button" value="黒" data-bgcolor="black"> 18<input type="button" value="赤" data-bgcolor="red"> 19

投稿2022/07/22 03:00

yambejp

総合スコア114896

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

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

yuiran

2022/07/23 09:51

Javascriptでのコードを教えていただきありがとうございました。しかし、私は実はまだJavascriptは勉強していないのです…私が指示している先生の教えで、jQueryをメインに習っている段階で、今回の模写をすることになりました。なので、jQueryでのクッキー保存の方法を書く必要があります。 質問で、」私がどのjQueryのcdnやファイルを使っているのかHTMLに書きませんでしたので補足として書きます。 ```html``` ``` <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script type="text/javascript" src="js/jquery.cookie-1.4.1.min.js"></script> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script> <script type="text/javascript" src="js/jquery.js"></script> ``` おっしゃるように、js.cookie.jsで書いているつもりです。 よろしくお願いいたします。
guest

0

それはクッキーに値の設定があることをifで確認してからイベントを追加するコードになってるからです。
クッキーに値が設定されていなければイベントが追加されないのでイベント内で記述されている設定変更コードも実行されないでしょう。
ifの中のコードは一旦ifの外に出したうえで、クッキーに値があるときだけ$fblackback.addClassするコードにでもすればいいのではないでしょうか。

投稿2022/07/21 20:08

RiaFeed

総合スコア2701

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

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

yuiran

2022/07/23 08:15

考え方のヒントをありがとうございます。いただきましたアドバイスをもとにこのようなコードを書いてみました。 あと、HTMLファイルに記載した今回のjQueryのファイルやCDNについて書いていなかったので合わせてこちらに書きます。 ```html``` ``` <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script type="text/javascript" src="js/jquery.cookie-1.4.1.min.js"></script> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script> <script type="text/javascript" src="js/jquery.js"></script> ``` jQuery.jsファイルは私がこの模写サイト用に記述しているjQueryのファイルです。 考えたコード ```jQuery``` ``` var $fblackback = $('.base,.header-menu,.nvb-colour,.dropdown-menu,.thr-dropdown-m,.taisetu-back,.for-purpose,.for-category,.tab-area,.nav-pills,.tab-content, .panel_area,.card-body,.admap_outer,.rec_infoarea,.access,.bottom-slider,.for-category ul,.card,#header-text'); var $lfmandcb = $('.upper-h .uh-right dl dd a,.nav-link,.nav-link.active,.tcard .btn-link,.fp-item a'); var $bluetowhf = $('li a,.link_list a'); var $bblackc= $fblackback.hasClass('blackback') == true $(function(){ if($.cookie("havingb")){ $('#black').on('click',() => { $fblackback.removeClass('blackback'); $('#headerlogo').find('img').attr('src', '../img/logo_01.png'); $("#black").text($("#black").text().replace("白", "黒")); $lfmandcb.css('color','#212529'); $bluetowhf.css('color','#007bff'); // $.cookie("havingb",""); })} else{ $('#black').on('click',() => { $fblackback.addClass('blackback'); $("#black").text($("#black").text().replace("黒", "白")); $('#headerlogo').find('img').attr('src', '../img/blackverlogo.png'); $lfmandcb.css('color','#fff'); $bluetowhf.css('color','#fff'); $.cookie("havingb","$bblackc"); } )} }); ``` こうしてみたのですが、visual studio codeでgo liveの環境では、背景色の変更もできなくなっていました。 ファイルをクロムのブラウザで表示した環境では、背景を黒くすることはできましたが、再読込しても、黒背景の状態は維持されず、また、黒背景になったあとに、白背景の戻すこともできなくなっていました。 お手数をおかけしてしまい申し訳ありませんが、もう少し噛み砕いて 今回のクッキー設定の部分についてご指導いただけますと幸いです。 どうぞ、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問