javaScriptが分からない
とんでもないレベルの初心者です。JavaScriptに強い方お助けくださいませ。
ボタン押下時にカレントクラスを付与して、結果をクッキーに保存するJavaScriptを書きたいのですが……。
背景・文字色を変更するボタンを押したとき、白背景が適用されているときはそのボタンが凹み、黒適応時は黒ボタンが凹む。デフォルトで白背景が適応され、ボタン押下の結果がクッキーに保存されるjavaScriptを書きたいです。
発生している問題
ボタンにカレント表示は出来るようになりましたが、結果がクッキーに保存されず、選択した背景が維持されません。特に、試したこと2個目のJavaScriptを書き加えると、ボタン自体が効かなくなります。ボタンを押された凹んだ形状、背景の色はページをまたぐと元に戻ってしまいます。
エラー
Uncaught TypeError: Cannot read property 'match' of undefined at HTMLDocument.<anonymous> (jquery.illbenet_novel.js:18)
このエラーが以下に対して出ました。
if ($('#bw_swich').attr('onclick').match(/change2/)) {
ボタンのソースコード
javascript
1<script type="text/javascript"> 2 function change1( newColor, newBgColor, newBgColor, newBgColor , newBgColor, newBgColor) { 3 document.getElementById('main').style.backgroundColor = newColor; 4 document.getElementById('main').style.color = newBgColor; 5 document.getElementById('h3').style.color = newBgColor; 6 document.getElementById('h4').style.color = newBgColor; 7 document.getElementById('honbun_next').style.color = newBgColor; 8 document.getElementById('honbun_prev').style.color = newBgColor; 9 } 10 function change2( newColor, newBgColor, newBgColor , newBgColor , newBgColor, newBgColor) { 11 document.getElementById('main').style.backgroundColor = newColor; 12 document.getElementById('main').style.color = newBgColor; 13 document.getElementById('h3').style.color = newBgColor; 14 document.getElementById('h4').style.color = newBgColor; 15 document.getElementById('honbun_next').style.color = newBgColor; 16 document.getElementById('honbun_prev').style.color = newBgColor; 17 } 18</script>
html
1<div id="main"> 2 <div id="bw_swich"> 3 <input type="button" value="" onclick="change2('#fff','#212931','#212931','#212931','#212931','#212931');" id="White" class="far" title="白背景"> 4 <input type="button" value="" onclick="change1('#000','#fff','#fff','#fff','#fff','#fff');" id="Black" class="fas" title="黒背景"> 5 </div> 6 <div id="novel"> 7 <button id="honbun_next"><i title="次のページへ"><</i></button> 8 <div div id="honbun" class="serif middle"> 9 <button id="honbun_prev"><i title="前のページへ">></i></button> 10 </div> 11 </div> 12</div>
htmlにmain要素は記載しています。
css
1#White.current, #Black.current{~~~装飾~~~}
試したこと
自分で書いてみたコードです。
javascript
1 // White設定ボタン押下時にカレントクラスを付与 2 $("#White").click(function () { 3 // ボタンにカレントクラスを付与 4 $("#White").addClass('current'); 5 $("#Black").removeClass('current'); 6 // 7 $('main').remove('change2'); 8 // クッキーに選択結果を登録する 9 Cookies.set('cookieColor', 'change2', { expires: 7 }); 10 return false; 11 }); 12 // Black設定ボタン押下時にカレントクラスを付与 13 $("#Black").click(function () { 14 // ボタンにカレントクラスを付与 15 $("#Black").addClass('current'); 16 $("#White").removeClass('current'); 17 // 18 $('main').remove('change1'); 19 // クッキーに選択結果を登録する 20 Cookies.set('cookieColor', 'change1', { expires: 7 }); 21 return false; 22 });
さらに
javascript
1$(document).ready( 2 function() { 3if (!Cookies.get('cookieColor')) { 4 // クッキー未登録時に診断してカレントクラスを付与 5 if ($('#bw_swich').attr('onclick').match(/change2/)) { 6 $('#White').addClass('current'); 7 $("#honbun").add('change2'); 8 $("#honbun").remove('change1'); 9 } else { 10 $('#Black').addClass('current'); 11 $("#honbun").remove('change2'); 12 $("#honbun").add('change1'); 13 } 14 } else if (Cookies.get('cookieColor') == 'change2') { 15 // クッキー白登録であれば白ボタンにクラス付与 16 $('#White').addClass('current'); 17 $('#Black').removeClass('current'); 18 // 黒クラス付与 19 $("#honbun").add('change2'); 20 $("#honbun").remove('change1'); 21 } else if (Cookies.get('cookieColor') == 'change1') { 22 // クッキー黒登録であれば黒ボタンにクラス付与 23 $('#White').removeClass('current'); 24 $('#Black').addClass('current'); 25 // 白クラス付与 26 $("#honbun").remove('change2'); 27 $("#honbun").add('change1'); 28 } 29} 30);
試したこと二個目のjavascriptが効かなくて困っています。どうかお助けください。お願いいたします。
補足情報(ツールのバージョンなど)
chrome最新版、クッキーはこちらからお借りしました(https://illbenet.jp/view/99)クッキーはhtmlと同ディレクトリに置いています。<script src="./js.cookie.js"></script>のJSはhtmlに記載しています。クッキーの動向はサーバー上でテストページを作って見ています。