PageSourceSearch

https://www.esakihome.co.jp/assets_new/common/js/favorite.js

js esakihome.co.jp collected 2026-10-07 21:02:03 UTC 3,642 bytes, 118 lines download raw bytes

1// favorite.js
2
3function favorite(inCookie) {
4  const checkbox = document.getElementById(inCookie);
5  // console.log("チェック状態:", checkbox.checked);
6
7  //チェックを外す動作かチェックをつけた動作かを判別する
8  if (checkbox.checked === false) {
9    //配列から該当idの物件を取り除く
10    var arr = getCookieArray();
11    //配列の中の何番目のものが削除されたか特定する
12    for (var i = 0; i < arr.length; i++) {
13      if (i == 0 && arr.length == 1 && arr[i] == inCookie) {
14        //どうやっても空にならないのでクッキーの寿命を0にする
15        document.cookie = "buil_cd=; max-age=0; path=/;";
16        return;
17      } else if (i == 0 && arr[i] == inCookie) {
18        //最初に入れられた配列は下のやり方では抜けないから
19        arr.shift();
20        break;
21      } else if (arr[i] == inCookie) {
22        arr.splice(i, 1);
23        break;
24      }
25    }
26    //クッキーを上書き
27    arrayToCookie(arr);
28  } else {
29    //配列に該当idの物件を加える
30    var arr = getCookieArray();
31    arr.push(inCookie);
32    arrayToCookie(arr);
33  }
34}
35
36//ページが読まれた時に既にお気に入り登録されている物件であったらハートを塗っておく
37(window.onload = function () {
38  arr = getCookieArray();
39  if (arr.length >= 1) {
40    //連想配列内ににbuil_cdがあったら、該当idにチェックをあらかじめ付けておく
41    var boxes = document.getElementsByName("heart_check");
42    //チェックボックスの個数を取得
43    var cnt = boxes.length;
44    for (var j = 0; j < arr.length; j++) {
45      for (var i = 0; i < cnt; i++) {
46        if (boxes.item(i).id == arr[j]) {
47          boxes.item(i).checked = true; //チェックボックスをオン
48        }
49      }
50    }
51  }
52})();
53
54//クッキーを取得してそれを連想配列にし、buil_cdのみの配列にして返す
55function getCookieArray() {
56  var arr = new Array();
57  if (document.cookie != "") {
58    var tmp = document.cookie.split("; ");
59    for (var i = 0; i < tmp.length; i++) {
60      var data = tmp[i].split("=");
61      arr[data[0]] = decodeURIComponent(data[1]);
62    }
63  }
64  //カンマ区切りしているのを分け、配列に入れる
65  var result = [];
66  if (!arr["buil_cd"]) {
67  } else {
68    result = arr["buil_cd"].split(",");
69  }
70  return result;
71}
72
73//配列をクッキー風文字列に戻し、クッキーを上書き保存する
74function arrayToCookie(arr) {
75  var str = "";
76  for (var i = 0; i < arr.length; i++) {
77    if (i == arr.length - 1) {
78      //配列の最後だったらカンマ不要
79      str = str + arr[i];
80    } else {
81      str = str + arr[i] + ",";
82    }
83  }
84  //期限設定
85  lifespan = getAfter30days();
86  //クッキーに書き込み
87  // console.log(
88  //   "buil_cd=" + str + ";expires=" + lifespan + ";path=/;"
89  // );
90  document.cookie = "buil_cd=" + str + ";expires=" + lifespan + ";path=/;";
91}
92
93//cookieの寿命(30日)を設定するために30日後の日付を取得する
94function getAfter30days() {
95  var date1, date2;
96  var kigen = 30;
97  //今日の日付
98  date1 = new Date();
99  //30日後に
100  date1.setTime(date1.getTime() + kigen * 24 * 60 * 60 * 1000);
101  //GMT形式に変換
102  date2 = date1.toGMTString();
103  return date2;
104}
105
106function js_check_toggle(num) {
107  if (document.getElementById(num).checked == true) {
108    document.getElementById(num).checked = false;
109    favorite(num);
110  } else {
111    document.getElementById(num).checked = true;
112    favorite(num);
113  }
114}
115
116$("[class=heartcheck_detail]").click(function () {
117  location.reload(true);
118});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.