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

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

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

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JavaScript

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

Q&A

解決済

1回答

1756閲覧

cookie でボタンのオン・オフ機能をしたい

hyskyo

総合スコア79

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JavaScript

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

0グッド

0クリップ

投稿2015/10/25 09:44

多分このような機能はあまりしないと思いますが非常に勉強になりますので、是非解決をお願いします。

したいことは:
1,登録画面(100枚画像があるとします)から各画像のボタンを押したら一覧ページに押された画像がそれぞれ保存されます、その時に登録画面での押された画像のボタンがオフになって押せなくなります。また、一覧ページからそれぞれの画像を削除すると登録画面上での削除された画像だけのボタンがオンに戻れるようにしたいです。

2, 一覧ページでの画像が全て削除されたら、一覧ページのcookie(ブラウザの開発ツールでのResources/Cookies/での)が削除されて何もクリックされていませんのメッセージが表示されるようにしたいです。

3, 現状は画像が登録画面から一覧ページに最新順に保存されますがその画像を1個ずつ削除すると例えば一番上の画像を削除したいのに一番下の画像が削除されます、逆に一番下の画像を削除したいのに一番上の画像が削除されてしまいます。
どうぞ宜しくお願いします。

list.html

<!DOCTYPE html> <html lang="ja"> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.js"></script> <script src="/js/jquery.cookie.js" charset="euc-jp"></script> <script> $(function() { $(document).ready( function(){ var ss = $.cookie('favorite'); if (ss == null) { $('#list').text('何もクリックされていません'); } else { ss = $.cookie('favorite'); ss = JSON.parse(fa); for (var i = fa.length -1; i >= 0; i--) { ss[i] = ss[i].substring(ss[i].lastIndexOf('_0') + 2, ss[i].length); var d = ss[i].split('_'); $('#list').append($('<img src="' + d[1] + '"><button class="del">削除</button>')); }; } }); $(document).on('click', '.del', function() { var index = $('.del').index(this); alert('削除してもいいですか?'); var ss = $.cookie('favorite'); if (ss) { var ss = JSON.parse(ss); ss.splice(index, 1); $.cookie('favorite', JSON.stringify(ss), {'expires':365, 'path': '/'}); location.reload(true); } }); }); </script> </head> <body class="index" > <div id="list"> </div></div> </body> </html>

regist.html

<!DOCTYPE html> <html lang="ja"> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.js"></script> <script src="/js/jquery.cookie.js" charset="euc-jp"></script> <script> $(function () { $('img[src="/images/btn_favorite.png"]').click(function () { var index = $('img[src="/images/btn_favorite.png"]').index(this); var h2 = $('div.box_text:eq(' + index + ')').children('h2'); var img = $('div.box_main:eq(' + index + ')').find('img'); var src_para = $(this).closest('a').attr('href'); $.cookie.json = true; var data = $(h2).text() + '_' + './pages/' + img.attr('src'); if ($.cookie('favorite') == null) { var p = []; p.push(data); $.cookie('favorite', JSON.stringify(p), {'expires':365, 'path': '/'}); } else { var ss = JSON.parse($.cookie('favorite')); console.log(ss); if (ss.indexOf(data) == -1) { ss.push(data); } else { var ima = []; for (var i = 0; i < ss.length; i++){ if (ss[i] != data){ ima.push(ss[i]); } } ima.push(data); ss = ima; } $.cookie('favorite', JSON.stringify(ss), {'expires':365, 'path': '/'}); } return true; }); }); </script> </head> <body> <div class="box_main"> <div class="photo"><a href="javascript:void(0);"><img src="./images/A.png" ></a></div> <div class="box_text"> <h2>表品A</h2> </div> </div> <table width="100%"> <tbody> <tr> <td width="50%"> <a href="" class="etc_link"><img src="./images/btn_favorite.png"></a> </td> </tr> </tbody> </table> <div class="box_main"> <div class="photo"><a href="javascript:void(0);"><img src="./images/B.jpg" ></a></div> <div class="box_text"> <h2> 商品B</h2> </div> </div> <table width="100%"> <tbody> <tr> <td width="50%"> <a href="" class="etc_link"><img src="./images/btn_favorite.png"></a> </td> </tr> </tbody> </table> <div class="box_main"> <div class="photo"><a href="javascript:void(0);"><img src="./images/C.jpg"></a></div> <div class="box_text"> <h2> 商品C</h2> </div> </div> <table width="100%"> <tbody> <tr> <td width="50%"> <a href="" class="etc_link"><img src="./images/btn_favorite.png"></a> </td> </tr> </tbody> </table> </body> </html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

####プログラムは実装したとおりにしか動きません。

本件、回答ではないですが、

プログラムは実装したとおりにしか動きません。
つまり、思った通りの動きをさせるためには、
思った通りの実装をしている必要があると思いますが、如何でしょうか?

↓少なからず、JavaScriptエラーが出ている状態ではそれができていないと思います。
イメージ説明

今一度ご質問のコードを見直されてみてはいかがでしょう。
ちなみに、当該箇所はこちらで私が修正提示している箇所になります。

投稿2015/10/26 10:00

TetsujiMiwa

総合スコア1124

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

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

hyskyo

2015/10/29 02:33

ご指摘ありがとうございます。 頑張って直してみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問