cookieでセットした値を削除する
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 4,452

退会済みユーザー
セットされた、クッキー名vstitle1を
削除ボタンをクリック後に削除するようにしたいのですが
削除できません。
クッキーの保存と、クッキーがセットされていれば、値を表示
までは、確認できましたが、その後の削除がうまくいきません。
ご教授お願いいたします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="Shift_JIS">
<title>タイトル</title>
<script type="text/JavaScript" src="js/jquery.js"></script>
<script type="text/JavaScript">
// クッキーの値を取得 getCookie(クッキー名); //
function getCookie(c_name) {
var st = "";
var ed = "";
if (document.cookie.length > 0) {
// クッキーの値を取り出す
st = document.cookie.indexOf(c_name + "=");
if (st != -1) {
st = st + c_name.length + 1;
ed = document.cookie.indexOf(";", st);
if (ed == -1) ed = document.cookie.length;
// 値をデコードして返す
return unescape(document.cookie.substring(st, ed));
}
}
return "";
}
// クッキー保存 setCookie(クッキー名, クッキーの値, クッキーの有効日数); //
function setCookie(c_name, value, expiredays) {
// pathの指定
var path = location.pathname;
// pathをフォルダ毎に指定する場合のIE対策
var paths = new Array();
paths = path.split("/");
if (paths[paths.length - 1] != "") {
paths[paths.length - 1] = "";
path = paths.join("/");
}
// 有効期限の日付
var extime = new Date().getTime();
var cltime = new Date(extime + (60 * 60 * 24 * 1000 * expiredays));
var exdate = cltime.toUTCString();
// クッキーに保存する文字列を生成
var s = "";
s += c_name + "=" + escape(value);// 値はエンコードしておく
s += "; path=" + path;
if (expiredays) {
s += "; expires=" + exdate + "; ";
} else {
s += "; ";
}
// クッキーに保存
document.cookie = s;
}
// ②クッキーに値がセットされていれば値を表示
function Title() {
var vstitle1 = getCookie('vstitle1');
var vstitle2 = getCookie('vstitle2');
var vstitle3 = getCookie('vstitle3');
var vstitle4 = getCookie('vstitle4');
if (getCookie('vstitle1') !=="") {
$("strong").text(vstitle1);
// ③クッキーの削除
$(".Titlebtn").click(function () {
var dt = new Date('1999-12-31T23:59:59Z'); // 過去の日付をGMT形式に変換
document.cookie = "key1=; expires=" + dt.toUTCString();
document.cookie = "key2=; max-age=0";
});
}
if (getCookie('vstitle2')!=="") {
$("strong").text(vstitle2);
}
if (getCookie('vstitle3')!=="") {
$("strong").text(vstitle3);
}
if (getCookie('vstitle4')!=="") {
$("strong").text(vstitle4);
}
else{}
}
// 複数のtitleの内容を記憶する
//空きチェック
function TitleWrite() {
//初期値設定
var breakcunt = 4;
for( i=0; i<4; i++ ){
if (getCookie('vstitle'+(i+1)) ==""){
breakcunt = i;
break ;
}
}
if(breakcunt>3){
window.alert('空きありません');
return "";
}
else{
var vstitle = document.getElementsByClassName('title');
setCookie('vstitle'+(breakcunt+1), $('.title').text(), 7);
window.alert('保存しました');
Title();
}
}
$(function() {
Title();
});
</script>
</head>
<body>
<h2 class="title">titleを記録</h2>
<div><strong class="visit"></strong><input class="Titlebtn" type="submit" value="削除" /></div>
<button id="setButton" onclick="TitleWrite();">保存</button>
</body>
</html>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
そもそもですが、
$(".Titlebtn").click(function() {
上記ボタンクリックのイベントがTitle()の中に入っているのでボタン押しても何も起きないですよ。
$(function(){});の中など、クリックイベントが参照できる場所に移動させてください。
また、せめてalert()かconsole.log()で何か文言を出力し、「ここまで通っている」確認ができるようデバッグの仕方は覚えておいた方が良いです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+1
// ③クッキーの削除
...
var dt = new Date('1999-12-31T23:59:59Z'); // 過去の日付をGMT形式に変換
document.cookie = "key1=; expires=" + dt.toUTCString();
key1=;
の部分は、「key1」に保存されたcookieを削除、という指定になります。
今回削除したいのは 「vstitle1」~「vstitle4」かと思いますので、key1の部分をそれぞれに変えてあげてください。
document.cookie = "vstitle1=; expires=" + dt.toUTCString();
...
document.cookie = "vstitle4=; expires=" + dt.toUTCString();
Cookie操作処理のサンプルは、下記サイトのサンプルが参考になると思います。
※ソースを丸コピで使うのではなく「どんな処理をしているか。どんな書き方で書いているか」という視点で参考にしてください。
https://developer.mozilla.org/ja/docs/Web/API/Document/cookie#リトルframework_Unicodeをサポートしたクッキーの完全な読み書き
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
m.ts10806
2017/11/17 09:23
インデントがめちゃくちゃでソースコードが読みづらいので調整してもらえますか?また毎度ですが「うまくいきません。」では何がおきているのか伝わりません。起きている現象、エラーメッセージなど具体的に記述してください。