質問編集履歴

2

修正

2019/01/21 20:04

投稿

marason
marason

スコア12

test CHANGED
@@ -1 +1 @@
1
- JQUERYのcookie.jsクッキー保存をするときに、値を削除する場合は、どのよに書べきしょうか?
1
+ JQUERYで配列操作がいかない
test CHANGED
@@ -1,3 +1,5 @@
1
+ ###前提
2
+
1
3
  JQUERYのcookie.jsでクッキーの保存をするときに、このようなボタンのdata-idを拾ってクッキーに保存していこうと考えてます。
2
4
 
3
5
 
@@ -14,9 +16,17 @@
14
16
 
15
17
  ```
16
18
 
19
+ ###実現したいこと
20
+
17
- そして「.uncheck」の方をクリックしたときには、そのdata-idをクッキーから削除したいんですけど、そがうまくきなくて質問させて頂きました。
21
+ クリック済みである「.uncheck」をクリックしたときには、そのdata-idをクッキーから削除したいんですけど、そのときにカンマ残ってしま、これを削除したいです
18
22
 
19
23
 
24
+
25
+ たとえば「4%2C2」のときに「4」の「.uncheck」をクリックしたときは「2」だけを保存したいのに、「%2C2」のような感じでカンマ(%2C)が残ったままクッキーに保存されてしまうんです。
26
+
27
+
28
+
29
+ ###試したこと
20
30
 
21
31
  ↓現在のコードです
22
32
 
@@ -30,9 +40,9 @@
30
40
 
31
41
  var current_checkId = $.cookie("check");
32
42
 
33
- if (current_checkId) {
43
+ var click_checkId = $(this).attr('data-id');
34
44
 
35
- var click_checkId = $(this).attr('data-id');
45
+ if (current_checkId) {
36
46
 
37
47
  var result_checkId = click_checkId + ',' + current_checkId;
38
48
 
@@ -50,13 +60,13 @@
50
60
 
51
61
  $(this).removeClass('uncheck').addClass('check');
52
62
 
53
- var current_checkId = $.cookie("check");
63
+ var current_checkId = $.cookie("check");
64
+
65
+ var click_checkId = $(this).attr('data-id');
54
66
 
55
67
  if (current_checkId) {
56
68
 
57
69
  var current_checkId_array = current_checkId.split(',');
58
-
59
- var click_checkId = $(this).attr('data-id');
60
70
 
61
71
  var idx = current_checkId_array.indexOf(click_checkId);
62
72
 

1

配列を使った方法に変更

2019/01/21 20:03

投稿

marason
marason

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
1
  JQUERYのcookie.jsでクッキーの保存をするときに、このようなボタンのdata-idを拾ってクッキーに保存していこうと考えてます。
2
+
3
+
4
+
5
+ ボタンはたくさんあり、クリックすると「.check」が「.uncheck」になります。
2
6
 
3
7
 
4
8
 
@@ -10,19 +14,11 @@
10
14
 
11
15
  ```
12
16
 
13
-
14
-
15
- かし、チェック済みボタンである「.uncheck」の方をクリックしたときには、そのdata-idをクッキーから削除したいんですけど、そのとに良い方法が思い浮かばず質問させて頂きました。
17
+ 「.uncheck」の方をクリックしたときには、そのdata-idをクッキーから削除したいんですけど、それがうまくでなくて質問させて頂きました。
16
18
 
17
19
 
18
20
 
19
- なんとなく考えたのがこの方法↓なんでけど、これだと「.uncheck」の方をクリックしたとき、「%2C%2C2」のような感じでクッキーに保存されてしまい、要はカンマだけ削除できないんです。
20
-
21
-
22
-
23
- 普通はどように書くべきかなど、もっとちゃんとした書き方もあったら教えてほしいです。よろしくお願い致します!
21
+ ↓現在コードです
24
-
25
-
26
22
 
27
23
  ```JQUERY
28
24
 
@@ -34,37 +30,47 @@
34
30
 
35
31
  var current_checkId = $.cookie("check");
36
32
 
37
- var click_checkId = $(this).attr('data-id');
38
-
39
33
  if (current_checkId) {
40
34
 
35
+ var click_checkId = $(this).attr('data-id');
36
+
41
- var result_checkId = click_checkId + ',' + current_checkId;
37
+ var result_checkId = click_checkId + ',' + current_checkId;
42
38
 
43
39
  }else{
44
40
 
45
- var result_checkId = click_checkId;
41
+ var result_checkId = click_checkId;
46
42
 
47
43
  }
48
44
 
49
45
  $.cookie( "check", result_checkId,{ expires: 730, path:'/'} );
50
46
 
51
- });
47
+ });
52
48
 
53
49
  $(document).on("click",".check_btn.uncheck", function(){
54
50
 
55
51
  $(this).removeClass('uncheck').addClass('check');
56
52
 
57
- var current_checkId = $.cookie("check");
53
+ var current_checkId = $.cookie("check");
58
-
59
- var click_checkId = $(this).attr('data-id');
60
54
 
61
55
  if (current_checkId) {
62
56
 
57
+ var current_checkId_array = current_checkId.split(',');
58
+
59
+ var click_checkId = $(this).attr('data-id');
60
+
61
+ var idx = current_checkId_array.indexOf(click_checkId);
62
+
63
+ if (idx != -1){
64
+
65
+ current_checkId_array.splice(idx, 1);
66
+
67
+ }
68
+
63
- var result_checkId = current_checkId.replace(click_checkId, "");
69
+ var result_checkId = current_checkId.replace(click_checkId, "");
64
70
 
65
71
  }else{
66
72
 
67
- var result_checkId = click_checkId;
73
+ var result_checkId = click_checkId;
68
74
 
69
75
  }
70
76
 
@@ -75,3 +81,5 @@
75
81
  });
76
82
 
77
83
  ```
84
+
85
+ 普通はどのように書くべきかなど、もっとちゃんとした書き方もあったら教えてほしいです。よろしくお願い致します!