PageSourceSearch

https://www.asahi-shuzo-online.jp/assets/js/spCart.js?date=20230317

js asahi-shuzo-online.jp collected 2026-10-04 05:56:22 UTC 83,990 bytes, 1,387 lines download raw bytes

1//spCart v1.04
2document.addEventListener(
3    "DOMContentLoaded",
4    function () {
5        var body = document.querySelector("body");
6
7        /*SUBMIT時ダイアログ*/
8        var modal = document.createElement("div");
9        modal.setAttribute("class", "modal");
10        modal.style.display = "none"; //普段非表示
11        //オーバーレイ
12        var modalOverlay = document.createElement("div");
13        modalOverlay.setAttribute("class", "modalOverlay");
14        modalOverlay.style.display = "none";
15        var modalClose = document.createElement("div");
16        modalClose.setAttribute("class", "modalClose");
17        modalClose.style.display = "none";
18        var cartAddMsg = document.createElement("div");
19        cartAddMsg.setAttribute("class", "cartAddMsg");
20        cartAddMsg.innerText = "カートに追加しました";
21        var cartAddClose = document.createElement("div");
22        cartAddClose.setAttribute("class", "cartAddClose");
23        cartAddClose.innerText = "買い物を続ける";
24
25        var goCartElem = document.createElement("div");
26        goCartElem.setAttribute("class", "goCartElem");
27        var goCart = document.createElement("a");
28
29        goCart.innerText = "カートを見る";
30        goCartElem.appendChild(goCart);
31        modal.appendChild(modalClose);
32        modal.appendChild(cartAddMsg);
33        modal.appendChild(cartAddClose);
34        modal.appendChild(goCartElem);
35        body.appendChild(modal);
36        body.appendChild(modalOverlay);
37
38        //ページ内の<id ="spCart_商品番号"></div>を探す
39
40        var cartWrap = document.querySelectorAll("[id^='spCart']"); //spCartに統合
41
42        /*
43    if(location.pathname.split("/")[4] == undefined){
44      var cartWrap = document.querySelectorAll("[id^='category']"); //カテゴリーページの場合
45    }else{
46      var cartWrap = document.querySelectorAll("[id^='spCart']"); //特集ページの場合
47    }
48  */
49
50        //日時取得(表示変更用)
51        var today = new Date();
52        var myD = today.getTime(); // 1970/1/1午前0時からの現在までのミリ秒
53        var myD_y = today.getFullYear(); // 現在の年度
54        var myD_m = today.getMonth() + 1; // 現在の月 ※+1する
55        var myD_d = today.getDate(); // 現在の日付
56
57        var VAR = /VAR/;
58        var OPT = /opt/;
59        var WRAPPING = /wrap/;
60        var NOBOX = /noBox/;
61
62        //JDG
63        var JDG = /B721|TEST/;
64        //熨斗包装必須(5本セット、JDG)
65        var WRAP_reqd = /I011|B721/;
66        var TSUGU = /I009/;
67        //肴味噌 季節別表示
68        var MISO = /V196/;
69
70        Array.prototype.forEach.call(cartWrap, (c) => {
71            if (location.pathname.split("/")[4] == undefined) {
72                c.classList.add("categoryPage"); //カテゴリーページの場合categoryPageクラス付与
73            } else {
74                c.classList.add("spPage"); //特集ページの場合spPageクラス付与
75            }
76
77            //[info_商品番号_(option)バリエーションNo._]を"_"で区切り、2番めの商品番号と3番めのバリーションNo.を定義
78
79            var spl = c.id.split("_");
80            var priceMode = spl[0].split("spCart")[1];
81
82            var ITEMNO = spl[1];
83            if (VAR.test(spl[2]) == true) {
84                //カート用バリエーションNo. (萬寿1800ml)B107-VAR-1
85                //バリエーション選択行(商品ページの表の順番)
86                var VARNO = spl[2].split("-")[1];
87            }
88
89            //アイテムナンバー定義
90            var ITM = "ITM-" + ITEMNO;
91
92            if (priceMode !== "Price") {
93                //FORM
94                var FORM = document.createElement("form");
95                FORM.action = "https://www.asahi-shuzo-online.jp/CART/cart.php";
96                FORM.method = "POST";
97                //submitでデータ送信しない
98                //FORM.setAttribute("onsubmit", "return false");
99                FORM.id = "form_" + ITEMNO;
100                c.appendChild(FORM);
101
102                //アイテム
103                var inputITM = document.createElement("input");
104                inputITM.type = "hidden";
105                inputITM.name = ITM;
106                inputITM.value = ITEMNO;
107                FORM.appendChild(inputITM);
108
109                //OPT カテゴリーページ判別
110                if (location.pathname.split("/")[4] == undefined) {
111                    var optString = location.pathname.split("/")[2]; //カテゴリーパス(数字)
112                } else {
113                    var optString = location.pathname.split("/")[4].split(".")[0]; //htmlファイル名(数字)
114                }
115
116                var LOCATION = "SP-" + optString;
117                var OPT1 = document.createElement("input");
118                OPT1.type = "hidden";
119                OPT1.name = "OPT-" + ITEMNO + "-1";
120                OPT1.value = LOCATION;
121                FORM.appendChild(OPT1);
122
123                //CNT
124                var CNT = document.createElement("input");
125                CNT.name = "CNT-" + ITEMNO;
126                CNT.type = "hidden";
127                CNT.value = "1";
128                FORM.appendChild(CNT);
129            }
130
131            //カテゴリーページ内に設定し取得した商品ページから商品情報/オプション項目読み込み
132            var baseurl = new URL("https://www.asahi-shuzo-online.jp/SHOP/" + ITEMNO + ".html");
133
134            fetch(baseurl)
135                .then((response) => response.text())
136                .then((data) => {
137                    const parser = new DOMParser();
138                    const html = parser.parseFromString(data, "text/html");
139
140                    //商品名
141                    if (html.querySelector("h1") !== null) {
142                        var itemName = html.querySelector("h1").innerText;
143                    }
144
145                    //価格表・カートボタンを読み込み
146                    var pi_cart = html.getElementById("pi_cart");
147
148                    var cartArea = pi_cart.getElementsByClassName("cartArea")[0];
149                    var tblObj = pi_cart.getElementsByClassName("variation")[0];
150                    var priceTitle = cartArea.getElementsByClassName("sps-variation-price")[0];
151                    var sps_variation_1 = cartArea.getElementsByClassName("sps-variation-1")[0];
152                    var sps_variation_2 = cartArea.getElementsByClassName("sps-variation-2")[0];
153
154                    if (sps_variation_1 != undefined) {
155                        var variation_1_title = sps_variation_1.innerText;
156                        if (sps_variation_2 != undefined) {
157                            var variation_2_title = sps_variation_2.innerText;
158                        }
159                    }
160
161                    //期間限定生産商品表示 => 購入情報に挿入
162
163                    var season = html.querySelector("option[value*='限定']");
164
165                    if (season !== null) {
166                        var season_select = season.parentElement;
167                        var season_options = season_select.options;
168                        season_select.style.display = "none";
169                        var season_txt = season.value;
170
171                        //オプションに表示されている商品の商品番号が含まれている場合
172                        var itm_skd_opt = pi_cart.querySelector("[value*=" + ITEMNO + "]");
173
174                        if (itm_skd_opt == null) {
175                            //それ以外は反映なし
176                            var seasonValue = season_txt;
177                            var seasonText = season_txt;
178                        } else {
179                            var itm_skd = itm_skd_opt.value;
180                            var skd_arr = itm_skd.split(/\//, 3);
181                            //区切り2つ目 => 販売スケジュール
182                            var itm_skd_txt = skd_arr[1];
183                            var itm_rsv = skd_arr[2];
184
185                            //区切り3つ目 => 予約・発送スケジュール
186
187                            if (itm_rsv !== undefined && itm_rsv.length !== 0) {
188                                //継は受注データのみに発送LTを表示
189                                if (TSUGU.test(ITEMNO) == true) {
190                                    seasonValue = itm_rsv;
191                                } else {
192                                    seasonValue = season_txt + "/" + itm_rsv;
193                                    seasonText = season_txt + itm_skd_txt + "(" + itm_rsv + ")";
194                                }
195                            } else {
196                                //発売スケジュールのみ
197                                if (itm_skd_txt !== undefined) {
198                                    seasonValue = season_txt;
199                                    seasonText = season_txt + itm_skd_txt;
200                                } else {
201                                    seasonValue = season_txt;
202                                    seasonText = season_txt;
203                                }
204                            }
205                        }
206
207                        var opt_season = document.createElement("input");
208                        opt_season.type = "hidden";
209                        opt_season.name = "OPT-" + ITEMNO + "-2";
210                        opt_season.value = seasonValue;
211                        if (FORM !== undefined) {
212                            FORM.appendChild(opt_season);
213                        }
214                        if (TSUGU.test(ITEMNO) !== true) {
215                            var opt_season_txt = document.createElement("p");
216                            opt_season_txt.setAttribute("class", "opt_season_txt");
217
218                            opt_season_txt.innerText = seasonText;
219                        }
220                    }
221
222                    var rowCnt = tblObj.rows.length; // 行数
223
224                    //バリエーション複数
225                    if (rowCnt > 1) {
226                        //表示するバリエーションを限定する場合(1種のみ)
227                        if (VAR.test(spl[2]) == true) {
228                            if (sps_variation_2 == undefined) {
229                                var varName = tblObj.rows[VARNO].cells[0].innerText;
230
231                                //価格が2種類以上の場合
232                                if (priceTitle !== undefined) {
233                                    var itemPrice = tblObj.rows[VARNO].cells[1].innerHTML;
234                                    if (priceMode !== "Price") {
235                                        var itemStock = tblObj.rows[VARNO].cells[2].innerHTML.replace(
236                                            "×",
237                                            "× 在庫なし"
238                                        );
239                                    }
240                                }
241                                //価格が1種類の場合
242                                else {
243                                    var itemPrice =
244                                        pi_cart.getElementsByClassName("selling_price")[0].parentElement.innerHTML;
245                                    if (priceMode !== "Price") {
246                                        var itemStock = tblObj.rows[VARNO].cells[1].innerHTML.replace(
247                                            "×",
248                                            "× 在庫なし"
249                                        );
250                                    }
251                                }
252                            }
253                            //2種類のバリエーションが付与されている商品の場合(JDG)
254                            else {
255                                //奇数番目は通常通り
256                                if (VARNO % 2 !== 0) {
257                                    var varName = tblObj.rows[VARNO].cells[0].innerText;
258                                    var var2Name = tblObj.rows[VARNO].cells[1].innerText;
259                                    var itemPrice = tblObj.rows[VARNO].cells[2].innerHTML;
260                                    if (priceMode !== "Price") {
261                                        var itemStock = tblObj.rows[VARNO].cells[3].innerHTML.replace(
262                                            "×",
263                                            "× 在庫なし"
264                                        );
265                                    }
266                                    //偶数番目はひとつ上の行を選ぶ(VAR1 2種× VAR2 2種のみの対応)
267                                } else {
268                                    var varName = tblObj.rows[VARNO - 1].cells[0].innerText;
269                                    var var2Name = tblObj.rows[VARNO].cells[0].innerText;
270                                    var itemPrice = tblObj.rows[VARNO].cells[1].innerHTML;
271                                    if (priceMode !== "Price") {
272                                        var itemStock = tblObj.rows[VARNO].cells[2].innerHTML.replace(
273                                            "×",
274                                            "× 在庫なし"
275                                        );
276                                    }
277                                }
278                            }
279
280                            var itemInfo = document.createElement("div");
281                            itemInfo.setAttribute("class", "itemInfo");
282
283                            var itemDl = document.createElement("dl");
284                            itemInfo.appendChild(itemDl);
285
286                            //バリエーション名表示
287                            var itemDt = document.createElement("dt");
288                            //バリエーション1種 =>VAR1名
289                            if (sps_variation_2 == undefined) {
290                                itemDt.innerText = varName;
291                            }
292                            //バリエーション2種 =>VAR1名+VAR2名
293                            else {
294                                if (varName !== "300ml") {
295                                    //300ml以外
296                                    itemDt.innerText =
297                                        varName +
298                                        "(" +
299                                        variation_2_title +
300                                        var2Name.replace(" ※包装/熨斗紙は対応不可", "") +
301                                        ")";
302                                } else {
303                                    itemDt.innerText = varName;
304                                }
305                            }
306                            itemDl.appendChild(itemDt);
307
308                            //バリエーション価格表示
309                            var itemDd = document.createElement("dd");
310                            itemDd.innerHTML = itemPrice;
311
312                            //バリエーション
313                            if (priceMode !== "Price") {
314                                var VAR1 = document.createElement("input");
315                                VAR1.name = "VAR1-" + ITEMNO;
316                                VAR1.type = "hidden";
317                                VAR1.value = varName;
318                                FORM.appendChild(VAR1);
319                            }
320
321                            //バリエーション2種類目
322                            if (sps_variation_2 !== undefined && priceMode !== "Price") {
323                                var VAR2 = document.createElement("input");
324                                VAR2.name = "VAR2-" + ITEMNO;
325                                VAR2.type = "hidden";
326                                VAR2.value = var2Name;
327                                FORM.appendChild(VAR2);
328                            }
329
330                            //バリエーション名が容量の場合 => クラス名付与(vol_1800)
331                            if (varName.indexOf("ml") !== -1) {
332                                var itemVol = varName.replace("ml", "");
333                                itemDd.setAttribute("class", "vol_" + itemVol);
334                            }
335                            itemDl.appendChild(itemDd);
336                            //バリエーション在庫表示
337                            if (priceMode !== "Price") {
338                                var stockDd = document.createElement("dd");
339                                stockDd.innerHTML = itemStock;
340                                stockDd.setAttribute("class", "stock_info");
341                                itemDl.appendChild(stockDd);
342                            }
343                            if (priceMode !== "Price") {
344                                FORM.appendChild(itemInfo);
345                            } else {
346                                c.appendChild(itemInfo);
347                            }
348                        }
349
350                        //全バリエーション表示
351                        else {
352                            for (var i = 1; i < rowCnt; i++) {
353                                //バリエーション1種類
354                                if (sps_variation_2 == undefined) {
355                                    var varName = tblObj.rows[i].cells[0].innerText;
356
357                                    //価格が2種類以上の場合
358                                    if (priceTitle !== undefined) {
359                                        var itemPrice = tblObj.rows[i].cells[1].innerHTML;
360                                        if (priceMode !== "Price") {
361                                            var itemStock = tblObj.rows[i].cells[2].innerHTML.replace(
362                                                "×",
363                                                "× 在庫なし"
364                                            );
365                                        }
366                                    }
367                                    //価格が1種類の場合
368                                    else {
369                                        var itemPrice =
370                                            pi_cart.getElementsByClassName("selling_price")[0].parentElement.innerHTML;
371                                        if (priceMode !== "Price") {
372                                            var itemStock = tblObj.rows[i].cells[1].innerHTML.replace(
373                                                "×",
374                                                "× 在庫なし"
375                                            );
376                                        }
377                                    }
378                                }
379
380                                //バリエーション2種類の場合(JDG)
381                                else {
382                                    //奇数番目は通常通り
383                                    if (i % 2 !== 0) {
384                                        var varName = tblObj.rows[i].cells[0].innerText;
385                                        var var2Name = tblObj.rows[i].cells[1].innerText;
386                                        if (varName == "300ml" && var2Name == "あり") continue;
387                                        var itemPrice = tblObj.rows[i].cells[2].innerHTML;
388                                        if (priceMode !== "Price") {
389                                            var itemStock = tblObj.rows[i].cells[3].innerHTML.replace(
390                                                "×",
391                                                "× 在庫なし"
392                                            );
393                                        }
394                                        //偶数番目はひとつ上の行を選ぶ(VAR1 2種× VAR2 2種のみの対応)
395                                    } else {
396                                        var varName = tblObj.rows[i - 1].cells[0].innerText;
397                                        var var2Name = tblObj.rows[i].cells[0].innerText;
398                                        if (varName == "300ml" && var2Name == "あり") continue;
399                                        var itemPrice = tblObj.rows[i].cells[1].innerHTML;
400                                        if (priceMode !== "Price") {
401                                            var itemStock = tblObj.rows[i].cells[2].innerHTML.replace(
402                                                "×",
403                                                "× 在庫なし"
404                                            );
405                                        }
406                                    }
407                                }
408
409                                //全バリエーション在庫状況取得
410                                var itemInfo = document.createElement("div");
411                                itemInfo.setAttribute("class", "itemInfo");
412                                var itemDl = document.createElement("dl");
413                                itemInfo.appendChild(itemDl);
414                                if (priceMode !== "Price") {
415                                    var VAR1 = document.createElement("input");
416                                    VAR1.name = "VAR1-" + ITEMNO;
417                                    VAR1.value = varName;
418
419                                    if (rowCnt > 2) {
420                                        if (MISO.test(ITEMNO) !== true) {
421                                            VAR1.type = "radio";
422                                        } else {
423                                            VAR1.type = "hidden";
424                                        }
425                                    } else {
426                                        VAR1.type = "hidden";
427                                    }
428
429                                    var selectItemArea = document.createElement("div");
430                                    selectItemArea.setAttribute("class", "selectItem");
431                                    selectItemArea.appendChild(VAR1);
432                                    itemDl.appendChild(selectItemArea);
433
434                                    //バリエーション2種類目
435                                    if (sps_variation_2 !== undefined) {
436                                        var VAR2 = document.createElement("input");
437                                        VAR2.name = "VAR2-" + ITEMNO;
438                                        VAR2.type = "hidden";
439                                        VAR2.value = var2Name;
440                                        VAR2.disabled = true;
441                                        VAR2.classList.add("selectVAR_" + i);
442                                        selectItemArea.appendChild(VAR2);
443                                        VAR1.type = "hidden";
444                                        VAR1.disabled = true;
445                                        VAR1.classList.add("selectVAR_" + i);
446                                        var selectVAR = document.createElement("input");
447                                        selectVAR.setAttribute("id", "selectVAR_" + i);
448                                        selectVAR.type = "radio";
449                                        selectItemArea.prepend(selectVAR);
450                                    }
451
452                                    //複数バリエーションの一番上をチェック => 在庫なしの場合は次のバリエーションにチェック
453                                    var radioChecked = c.querySelectorAll("input[type='radio']");
454                                    Array.prototype.forEach.call(radioChecked, (r) => {
455                                        if (radioChecked[0].disabled !== true) {
456                                            radioChecked[0].checked = true;
457                                            if (radioChecked[0].nextElementSibling !== null) {
458                                                radioChecked[0].nextElementSibling.disabled = false;
459                                                radioChecked[0].nextElementSibling.nextElementSibling.disabled = false;
460                                            }
461                                        } else {
462                                            if (radioChecked[1] !== undefined && radioChecked[1].disabled != true) {
463                                                radioChecked[1].checked = true;
464                                                if (radioChecked[1].nextElementSibling !== null) {
465                                                    radioChecked[1].nextElementSibling.disabled = false;
466                                                    radioChecked[1].nextElementSibling.nextElementSibling.disabled = false;
467                                                }
468                                            } else {
469                                                if (
470                                                    radioChecked[2] !== undefined &&
471                                                    radioChecked[2].disabled !== true
472                                                ) {
473                                                    radioChecked[2].checked = true;
474                                                    if (radioChecked[2].nextElementSibling !== null) {
475                                                        radioChecked[2].nextElementSibling.disabled = false;
476                                                        radioChecked[2].nextElementSibling.nextElementSibling.disabled = false;
477                                                    }
478                                                }
479                                            }
480                                        }
481                                    });
482                                }
483
484                                //バリエーション名表示
485                                var itemDt = document.createElement("dt");
486                                //バリエーション2種類
487                                if (sps_variation_2 !== undefined) {
488                                    if (varName == "300ml" && var2Name == "あり") continue; //300ml化粧箱あり時はスキップ
489                                    var var2 = document.createElement("span");
490                                    var2.setAttribute("class", "boxOpt");
491                                    var2.innerText =
492                                        "(" +
493                                        variation_2_title +
494                                        var2Name.replace(" ※包装/熨斗紙は対応不可", "") +
495                                        ")";
496
497                                    itemDt.innerText = varName;
498                                    itemDt.appendChild(var2);
499                                }
500                                //バリエーション1種類
501                                else {
502                                    itemDt.innerText = varName;
503                                }
504                                itemDl.appendChild(itemDt);
505                                //バリエーション価格表示
506                                var itemDd = document.createElement("dd");
507                                itemDd.innerHTML = itemPrice;
508                                //バリエーション名が容量の場合 => クラス名付与(vol_1800)
509                                if (varName.indexOf("ml") !== -1) {
510                                    var itemVol = varName.replace("ml", "");
511                                    itemDd.setAttribute("class", "vol_" + itemVol);
512                                }
513                                itemDl.appendChild(itemDd);
514                                //バリエーション在庫状況表示
515                                if (priceMode !== "Price") {
516                                    var stockDd = document.createElement("dd");
517                                    stockDd.innerHTML = itemStock;
518                                    stockDd.setAttribute("class", "stock_info");
519                                    itemDl.appendChild(stockDd);
520                                }
521                                if (priceMode !== "Price") {
522                                    FORM.appendChild(itemInfo);
523                                } else {
524                                    c.appendChild(itemInfo);
525                                }
526                            }
527                        }
528                    }
529                    //バリエーションなし
530                    else {
531                        if (tblObj.rows.length === 1) {
532                            //価格取得
533                            var itemPriceTxt = pi_cart.getElementsByClassName("selling_price")[0].innerText;
534                            var itemPrice = document.createElement("span");
535                            itemPrice.setAttribute("class", "selling_price");
536                            itemPrice.innerText = itemPriceTxt;
537                            var itemInfo = document.createElement("div");
538                            itemInfo.setAttribute("class", "itemInfo");
539                            var itemDl = document.createElement("dl");
540                            itemInfo.appendChild(itemDl);
541                            //バリエーション名表示
542                            var itemDt = document.createElement("dt");
543                            var noVarName = itemName.split("/")[1];
544                            itemDt.innerText = noVarName; //バリエーションなし => 商品名【/】以降表示
545                            itemDl.appendChild(itemDt);
546                            //価格表示
547                            var itemDd = document.createElement("dd");
548                            itemDd.appendChild(itemPrice);
549                            //(税込)追加
550                            var taxin = document.createElement("span");
551                            taxin.setAttribute("class", "taxin");
552                            taxin.innerText = "(税込)";
553                            itemDd.appendChild(taxin);
554                            itemDl.appendChild(itemDd);
555                            //在庫取得
556                            if (priceMode !== "Price") {
557                                var specTr = pi_cart.querySelectorAll("[class='spec'] tr");
558                                var stockTr = specTr[specTr.length - 1];
559                                var itemStock = stockTr.querySelector("td").innerHTML.replace("×", "× 在庫なし");
560                                itemStock = itemStock.trim();
561                                //在庫表示
562                                var stockDd = document.createElement("dd");
563                                stockDd.innerHTML = itemStock;
564                                stockDd.setAttribute("class", "stock_info");
565                                itemDl.appendChild(stockDd);
566                            }
567                            if (priceMode !== "Price") {
568                                FORM.appendChild(itemInfo);
569                            } else {
570                                c.appendChild(itemInfo);
571                            }
572                        }
573                    }
574
575                    if (priceMode !== "Price") {
576                        //包装オプションあり
577                        if (OPT.test(spl[2]) == true) {
578                            var OPTION = spl[2].replace("opt", "");
579                        }
580                        if (OPT.test(spl[3]) == true) {
581                            var OPTION = spl[3].replace("opt", "");
582                        }
583                        //ラッピングオプションあり
584                        if (WRAPPING.test(spl[2]) == true) {
585                            var OPTION = spl[2].replace("wrap", "");
586                        }
587
588                        if (NOBOX.test(spl[2]) == true && JDG.test(spl[1]) == true) {
589                            var JDGBox = c.querySelectorAll("[name^='VAR'][value^='あり']");
590                            if (JDGBox.length > 0) {
591                                Array.prototype.forEach.call(JDGBox, (b) => {
592                                    b.parentElement.parentElement.parentElement.setAttribute("style", "display:none;");
593                                    b.parentElement.parentElement.parentElement.disabled = true;
594                                });
595                                c.querySelector("[name^='VAR'][value*='なし']").disabled = false;
596                                c.querySelector("[name^='VAR'][value*='なし']").previousElementSibling.disabled = false;
597                                c.querySelector(
598                                    "[name^='VAR'][value*='なし']"
599                                ).previousElementSibling.previousElementSibling.checked = true;
600                            }
601                        }
602
603                        //包装・熨斗オプション
604                        if (OPTION !== undefined) {
605                            //オプション選択時JDG箱なしは削除
606
607                            var item300 = c.querySelectorAll("[name^='VAR'][value*='300ml']");
608                            if (item300.length > 0) {
609                                Array.prototype.forEach.call(item300, (s) => {
610                                    s.parentElement.parentElement.parentElement.setAttribute("style", "display:none;");
611                                });
612                            }
613                            var noBox = c.querySelectorAll("[name^='VAR'][value*='なし']");
614                            if (noBox.length > 0) {
615                                Array.prototype.forEach.call(noBox, (b) => {
616                                    b.parentElement.parentElement.parentElement.setAttribute("style", "display:none;");
617                                });
618                            }
619
620                            //ラッピング
621                            var wrappingOpt = pi_cart.querySelectorAll("[value*='リボン']");
622
623                            if (OPTION === "GOLD") {
624                                var wrapOpt = pi_cart.querySelector("option[value*='ゴールド']");
625                            }
626                            if (OPTION === "GREEN") {
627                                var wrapOpt = pi_cart.querySelector("option[value*='グリーン']");
628                            }
629                            if (OPTION === "PINK") {
630                                var wrapOpt = pi_cart.querySelector("option[value*='ピンク']");
631                            }
632                            if (OPTION === "ALL") {
633                                //リボン選択
634                                var wrappingOptName = wrappingOpt[0].parentElement
635                                    .getAttribute("name")
636                                    .replace("-1", "-" + ITEMNO);
637                                var ribonDl = document.createElement("dl");
638                                ribonDl.setAttribute("class", "ribon");
639
640                                Array.prototype.forEach.call(wrappingOpt, (ribon) => {
641                                    var ribonDt = document.createElement("dt");
642                                    var OPTIONS = document.createElement("input");
643                                    OPTIONS.type = "radio";
644                                    OPTIONS.name = wrappingOptName;
645                                    OPTIONS.value = ribon.value;
646                                    OPTIONS.classList.add("ribonColor");
647
648                                    ribonDt.prepend(OPTIONS);
649                                    ribonDl.appendChild(ribonDt);
650                                    var ribonDd = document.createElement("dd");
651                                    var _parts = ribon.value.split("(");
652                                    var _right = _parts.length > 1 ? _parts[1].replace(")", "") : "";
653                                    ribonDd.innerText = _right;
654                                    ribonDl.appendChild(ribonDd);
655                                });
656
657                                var ribonColor = ribonDl.getElementsByClassName("ribonColor");
658
659                                if (ribonColor[0] !== undefined) {
660                                    ribonColor[0].setAttribute("checked", "true");
661                                }
662
663                                var noRibon = document.createElement("input");
664                                noRibon.type = "radio";
665                                noRibon.name = wrappingOptName;
666                                noRibon.value = "";
667                                var noRibonDt = document.createElement("dt");
668                                var noRibonDd = document.createElement("dd");
669                                noRibonDd.innerText = "ラッピングなし";
670                                noRibonDt.appendChild(noRibon);
671                                ribonDl.appendChild(noRibonDt);
672                                ribonDl.appendChild(noRibonDd);
673
674                                var ribonSelect = document.createElement("div");
675                                ribonSelect.setAttribute("class", "ribonSelect");
676                                ribonSelect.innerText =
677                                    "ラッピングは" +
678                                    wrappingOpt[0].value.split("(")[0] +
679                                    "でご用意いたします。リボンの色をご選択ください。";
680
681                                FORM.appendChild(ribonDl);
682                                FORM.insertBefore(ribonSelect, ribonDl);
683                            }
684                            if (wrappingOpt.length !== 0 && OPTION !== "ALL" && wrapOpt !== undefined) {
685                                var wrappingOptName = wrappingOpt[0].parentElement
686                                    .getAttribute("name")
687                                    .replace("-1", "-" + ITEMNO);
688                                var wrappingValue = wrapOpt.value;
689                                var OPTIONS = document.createElement("input");
690                                OPTIONS.type = "hidden";
691                                OPTIONS.name = wrappingOptName;
692                                OPTIONS.value = wrappingValue;
693                                FORM.appendChild(OPTIONS);
694                            }
695
696                            //ギフトオプション
697                            var giftOpt;
698                            if (OPTION === "XMAS") {
699                                giftOpt = pi_cart.querySelector("option[value*='クリスマス']");
700                            }
701                            if (OPTION === "VDAY") {
702                                giftOpt = pi_cart.querySelector("option[value*='バレンタイン']");
703                            }
704                            if (OPTION === "WDAY") {
705                                giftOpt = pi_cart.querySelector("option[value*='ホワイトデー']");
706                            }
707                            if (OPTION === "FDAY") {
708                                giftOpt = pi_cart.querySelector("option[value*='父の日']");
709                            }
710                            if (OPTION === "MDAY") {
711                                giftOpt = pi_cart.querySelector("option[value*='母の日']");
712                            }
713                            if (OPTION === "BDAY") {
714                                giftOpt = pi_cart.querySelector("option[value*='Birthday']");
715                            }
716                            if (OPTION === "ToT") {
717                                giftOpt = pi_cart.querySelector("option[value*='ハロウィン']");
718                            }
719
720                            if (OPTION === "YEG") {
721                                giftOpt = pi_cart.querySelector("option[value*='歳暮']");
722                            }
723                            if (OPTION === "NEWYEAR") {
724                                giftOpt = pi_cart.querySelector("option[value*='年賀']");
725                            }
726                            if (OPTION === "HTC") {
727                                giftOpt = pi_cart.querySelector("option[value^='御祝']");
728                            } //20æ­³
729                            if (OPTION === "NEWJOB") {
730                                giftOpt = pi_cart.querySelector("option[value^='御祝…']");
731                            } //就職
732                            if (OPTION === "SGIFT") {
733                                giftOpt = pi_cart.querySelector("option[value*='中元']");
734                            }
735                            if (OPTION === "HIGAN") {
736                                giftOpt = pi_cart.querySelector("option[value*='御供']");
737                            }
738                            if (OPTION === "RETIRE") {
739                                giftOpt = pi_cart.querySelector("option[value*='退職']");
740                            }
741
742                            //オプション付与
743                            if (OPTION !== undefined && giftOpt != undefined) {
744                                var optValue = giftOpt.value;
745                                var optParts = giftOpt.parentElement;
746                                var optName = optParts.getAttribute("name").replace("-1", "-" + ITEMNO);
747                                var OPTIONS = document.createElement("input");
748                                OPTIONS.type = "hidden";
749                                OPTIONS.name = optName;
750                                OPTIONS.value = optValue;
751                                FORM.appendChild(OPTIONS);
752
753                                //化粧箱
754                                var giftboxOpt = pi_cart.querySelectorAll("[value*='本入']");
755
756                                if (giftboxOpt.length !== 0) {
757                                    var GBOptName = giftboxOpt[0].parentElement
758                                        .getAttribute("name")
759                                        .replace("-1", "-" + ITEMNO);
760
761                                    var GB18 = pi_cart.querySelector("option[value^='18']");
762                                    var GB72 = pi_cart.querySelector("option[value^='72']");
763
764                                    //1800ml化粧箱
765                                    if (GB18 !== null) {
766                                        var GB18value = GB18.value;
767                                        var GB18prc = GB18.innerText.split("(")[1];
768                                        if (GB18prc !== undefined) {
769                                            //化粧箱価格数字化
770                                            GB18prc = GB18prc.replace(")", "");
771                                            var GB18num = GB18prc.replace("Â¥", "");
772
773                                            GB18num = parseInt(GB18num);
774
775                                            var prc18 = c.querySelector("[class^='vol_18']");
776                                            if (prc18 !== null) {
777                                                var sellingPrice18 = prc18.getElementsByClassName("selling_price")[0];
778                                                if (sellingPrice18 !== undefined) {
779                                                    //商品価格数字化
780                                                    var itemPrc18 = sellingPrice18.innerText;
781                                                    var prc18num = itemPrc18.replace(/,|Â¥/g, "");
782                                                    prc18num = parseInt(prc18num);
783                                                    //合計金額合算表示
784                                                    var ttlNum18 = GB18num + prc18num;
785                                                    var TTL18 = Number(ttlNum18).toLocaleStr
785ing();
786                                                    var price18 = "Â¥" + TTL18;
787                                                    sellingPrice18.innerText = price18;
788                                                    var tax = " (税込)";
789                                                    var BD18txt =
790                                                        "(本体 " + itemPrc18 + " +別売化粧箱 " + GB18prc + ")";
791                                                    var boxTaxin = prc18.getElementsByClassName("taxin")[0];
792                                                    boxTaxin.innerText = tax;
793                                                    var BD18 = document.createElement("span");
794                                                    BD18.setAttribute("class", "itemBD");
795                                                    BD18.innerText = BD18txt;
796                                                    prc18.appendChild(BD18);
797
798                                                    var BOX18 = document.createElement("input");
799                                                    BOX18.type = "hidden";
800                                                    BOX18.name = GBOptName;
801                                                    BOX18.value = GB18value;
802                                                    prc18.parentElement.appendChild(BOX18);
803                                                }
804                                            }
805                                        }
806                                    }
807                                    //720ml化粧箱
808                                    if (GB72 !== null) {
809                                        var GB72value = GB72.value;
810                                        var GB72prc = GB72.innerText.split("(")[1];
811                                        if (GB72prc !== undefined) {
812                                            GB72prc = GB72prc.replace(")", "");
813                                            var GB72num = GB72prc.replace("Â¥", "");
814                                            GB72num = parseInt(GB72num);
815
816                                            var prc72 = c.querySelector("[class^='vol_72']");
817
818                                            if (prc72 !== null) {
819                                                var sellingPrice72 = prc72.getElementsByClassName("selling_price")[0];
820                                                if (sellingPrice72 !== undefined) {
821                                                    var itemPrc72 = sellingPrice72.innerText;
822
823                                                    var prc72num = itemPrc72.replace(/,|Â¥/g, "");
824
825                                                    prc72num = parseInt(prc72num);
826                                                    var ttlNum72 = GB72num + prc72num;
827                                                    var TTL72 = Number(ttlNum72).toLocaleString();
828                                                    var price72 = "Â¥" + TTL72;
829
830                                                    sellingPrice72.innerText = price72;
831
832                                                    var BD72 =
833                                                        " (税込)<br>(本体 " +
834                                                        itemPrc72 +
835                                                        " +別売化粧箱 " +
836                                                        GB72prc +
837                                                        ")";
838
839                                                    var boxTaxin = prc72.getElementsByClassName("taxin")[0];
840                                                    boxTaxin.innerHTML = BD72;
841
842                                                    var tax = " (税込)";
843                                                    var BD72txt =
844                                                        "(本体 " + itemPrc72 + " +別売化粧箱 " + GB72prc + ")";
845                                                    var boxTaxin = prc72.getElementsByClassName("taxin")[0];
846                                                    boxTaxin.innerText = tax;
847                                                    var BD72 = document.createElement("span");
848                                                    BD72.setAttribute("class", "itemBD");
849                                                    BD72.innerText = BD72txt;
850                                                    prc72.appendChild(BD72);
851
852                                                    var BOX72 = document.createElement("input");
853                                                    BOX72.type = "hidden";
854                                                    BOX72.name = GBOptName;
855                                                    BOX72.value = GB72value;
856                                                    prc72.parentElement.appendChild(BOX72);
857                                                }
858                                            }
859                                        }
860                                    }
861
862                                    //化粧箱オプション切り換え
863                                    var boxVAR1 = c.querySelectorAll("[name^='
863VAR1']");
864
865                                    if (boxVAR1.length > 1) {
866                                        var boxVAR18 = c.querySelector("[name^='VAR1'][value^='18']");
867                                        var boxVAR72 = c.querySelector("[name^='VAR1'][value^='72']");
868                                        var boxOPT18 = c.querySelector("[value^='18'][value*='本入']");
869                                        var boxOPT72 = c.querySelector("[value^='72'][value*='本入']");
870
871                                        boxOPT72.setAttribute("disabled", "");
872                                        boxVAR18.addEventListener("change", function (event) {
873                                            if (event.target.checked == true) {
874                                                boxOPT18.disabled = false;
875                                                boxOPT72.disabled = true;
876                                            } else {
877                                                boxOPT18.disabled = true;
878                                            }
879                                        });
880                                        boxVAR72.addEventListener("change", function (event) {
881                                            if (event.target.checked == true) {
882                                                boxOPT72.disabled = false;
883                                                boxOPT18.disabled = true;
884                                            } else {
885                                                boxOPT72.disabled = true;
886                                            }
887                                        });
888                                    }
889                                }
890                            }
891
892                            //包装オプションが設定されている商品
893                            var wrapOpt = pi_cart.querySelector("option[value*='包装'][value*='する']");
894                            if (wrapOpt !== null && OPTIONS !== undefined) {
895                                var wrapValue = wrapOpt.value;
896                                var wrapOptName = wrapOpt.parentElement
897                                    .getAttribute("name")
898                                    .replace("-1", "-" + ITEMNO);
899                                var WRAP = document.createElement("input");
900                                WRAP.name = wrapOptName;
901                                WRAP.value = wrapValue;
902
903                                //カジュアルギフトの場合は包装オプション強制付与
904                                if (
905                                    OPTION === "XMAS" ||
906                                    OPTION === "VDAY" ||
907                                    OPTION === "WDAY" ||
908                                    OPTION === "FDAY" ||
909                                    OPTION === "MDAY" ||
910                                    OPTION === "BDAY" ||
911                                    OPTION === "ToT"
912                                ) {
913                                    WRAP.type = "hidden";
914                                    FORM.appendChild(WRAP);
915                                }
916
917                                if (
918                                    OPTION === "YEG" ||
919                                    OPTION === "NEWYEAR" ||
920                                    OPTION === "HTC" ||
921                                    OPTION === "NEWJOB" ||
922                                    OPTION === "SGIFT" ||
923                                    OPTION === "HIGAN" ||
924                                    OPTION === "RETIRE"
925                                ) {
926                                    //フォーマル熨斗の場合包装オプション
927                                    if (WRAP_reqd.test(ITEMNO) !== true) {
928                                        WRAP.type = "checkbox";
929                                        WRAP.checked = true;
930                                        var wrapDl = document.createElement("dl");
931                                        wrapDl.setAttribute("class", "wrapDl");
932
933                                        itemInfo.appendChild(wrapDl);
934                                        var wrapDt = document.createElement("dt");
935
936                                        wrapDt.innerText = "包装する";
937                                        wrapDt.prepend(WRAP);
938                                        wrapDl.appendChild(wrapDt);
939                                        var wrapDd = document.createElement("dd");
940                                        wrapDd.setAttribute("class", "wrapAttn");
941                                        wrapDd.innerText = "包装しない場合はチェックを外してください";
942                                        wrapDl.appendChild(wrapDd);
943                                    } else {
944                                        //JDGと5本セットは包装必須(変更不可)
945                                        WRAP.type = "hidden";
946                                        FORM.appendChild(WRAP);
947                                    }
948
949                                    //表書き
950                                    var omotegakiDl = document.createElement("dl");
951                                    omotegakiDl.setAttribute("class", "omotegakiDl");
952                                    var omotegakiDt = document.createElement("dt");
953                                    omotegakiDt.innerText = "熨斗・表書き:";
954                                    if (ITEMNO == "I011") {
955                                        omotegakiDt.innerText = "短冊" + omotegakiDt.innerText;
956                                    }
957                                    var omotegakiDd = document.createElement("dd");
958                                    omotegakiDd.innerText =
959                                        optValue.split("…")[0] + "/" + optValue.split("…")[1].replace("/", "");
960                                    omotegakiDd.style.textAlign = "left";
961                                    omotegakiDl.appendChild(omotegakiDt);
962                                    omotegakiDl.appendChild(omotegakiDd);
963                                    itemInfo.appendChild(omotegakiDl);
964
965                                    //フォーマル熨斗の場合名入れオプション
966                                    var option_area = html.querySelectorAll("[class='option_area']");
967                                    Array.prototype.forEach.call(option_area, (optArea) => {
968                                        var op_title = optArea.firstElementChild;
969
970                                        if (op_title.innerText.indexOf("名入") !== -1) {
971                                            var NAIRE = op_title.nextElementSibling.children[0];
972                                            NAIRE.name = NAIRE.name.replace("-1", "-" + ITEMNO);
973                                            NAIRE.setAttribute("placeholder", "贈り主のお名前/新字体");
974                                            var naireDl = document.createElement("dl");
975                                            naireDl.setAttribute("class", "naireDl");
976                                            var naireDt = document.createElement("dt");
977                                            naireDt.innerText = "熨斗名入れ";
978                                            var naireDd = document.createElement("dd");
979                                            naireDd.appendChild(NAIRE);
980                                            naireDl.appendChild(naireDt);
981                                            naireDl.appendChild(naireDd);
982                                            itemInfo.appendChild(naireDl);
983                                        }
984                                    });
985                                }
986                            }
987                        }
988                    }
989
990                    //価格タイトル
991                    var infoTitle = document.createElement("div");
992                    infoTitle.setAttribute("class", "infoTitle");
993                    infoTitle.innerText = "商品価格";
994                    if (priceMode !== "Price") {
995                        FORM.prepend(infoTitle);
996                    } else {
997                        c.prepend(infoTitle);
998                    }
999
1000                    //購入ボタン button
1001                    if (priceMode !== "Price") {
1002                        var submit = document.createElement("button");
1003                        submit.type = "submit";
1004                        submit.id = "submit_" + ITEMNO;
1005                        var submitStr = document.createElement("p");
1006                        submitStr.setAttribute("class", "spSubmit");
1007
1008                        //送信
1009                        submit.addEventListener(
1010                            "click",
1011                            function (event) {
1012                                event.preventDefault(); // デフォルトのフォーム送信を防止
1013
1014                                // フォームデータを取得
1015                                var formData = new FormData(FORM);
1016
1017                                // リクエストの設定
1018                                var requestOptions = {
1019                                    method: "POST",
1020                                    body: formData,
1021                                };
1022
1023                                modal.style.display = "block"; // モーダルを表示
1024                                modalOverlay.style.display = "block"; // モーダルのオーバーレイを表示
1025                                modalClose.style.display = "block"; // モーダルを閉じるボタンを表示
1026
1027                                // モーダルのクローズ処理(共通のコード)
1028                                function closeModal() {
1029                                    modal.style.display = "none";
1030                                    modalOverlay.style.display = "none";
1031                                    modalClose.style.display = "none";
1032                                }
1033
1034                                // フォーム送信処理
1035                                goCartElem.addEventListener(
1036                                    "click",
1037                                    function () {
1038                                        // リクエストを送信
1039                                        fetch("https://www.asahi-s
1039huzo-online.jp/CART/cart.php", requestOptions)
1040                                            .then((response) => {
1041                                                if (response.ok) {
1042                                                    return response.text();
1043                                                } else {
1044                                                    throw new Error("Network response was not ok");
1045                                                }
1046                                            })
1047                                            .then((data) => {
1048                                                window.location.replace(
1049                                                    "https://www.asahi-shuzo-online.jp/CART/cart.php"
1050                                                );
1051                                            })
1052                                            .catch((error) => {
1053                                                //  window.location.replace("https://www.asahi-shuzo-online.jp/CART/cart.php");
1054                                            });
1055                                        closeModal(); // モーダルを閉じる
1056                                    },
1057                                    false
1058                                );
1059
1060                                // クローズボタンやオーバーレイをクリックした場合の処理(共通のコード)
1061                                function handleCloseClick() {
1062                                    // リクエストを送信
1063                                    fetch("https://www.asahi-shuzo-online.jp/CART/cart.php", requestOptions)
1064                                        .then((response) => {
1065                                            if (response.ok) {
1066                                                return response.text();
1067                                            } else {
1068                                                throw new Error("Network response was not ok");
1069                                            }
1070                                        })
1071                                        .then((data) => {
1072                                            window.location.reload(false); // ページを再読み込み
1073                                        })
1074                                        .catch((error) => {
1075                                            window.location.replace("https://www.asahi-shuzo-online.jp/CART/cart.php");
1076                                        });
1077                                    closeModal(); // モーダルを閉じる
1078                                }
1079
1080                                modalOverlay.addEventListener("click", handleCloseClick);
1081                                modalClose.addEventListener("click", handleCloseClick);
1082                                cartAddClose.addEventListener("click", handleCloseClick);
1083                            },
1084                            false
1085                        );
1086
1087                        if (OPTION !== undefined) {
1088                            submitStr.classList.add(OPTION);
1089                        }
1090                        submit.appendChild(submitStr);
1091                        FORM.appendChild(submit);
1092                        if (OPTION !== undefined && giftOpt !== undefined && optValue !== undefined) {
1093                            //ギフト包装購入ボタン
1094                            submitStr.innerText = optValue.split("…")[0] + "仕様でカートに入れる";
1095                        } else {
1096                            if (wrappingOpt !== undefined) {
1097                                //ラッピング購入ボタン
1098                                submitStr.innerText = "ラッピング(リボン)仕様でカートに入れる";
1099                            } else {
1100                                //通常購入ボタン
1101                                if (location.pathname.split("/")[4] == undefined) {
1102                                    submitStr.innerText = "カートに入れる";
1103                                } else {
1104                                    submitStr.innerText = "ご自宅用でカートに入れる";
1105                                }
1106                            }
1107                        }
1108                    }
1109
1110                    //商品詳細ボタン
1111                    var itemURL = "https://www.asahi-shuzo-online.jp/SHOP/" + ITEMNO + ".html";
1112
1113                    var itemPage = document.createElement("div");
1114                    itemPage.setAttribute("class", "itemPage");
1115                    var itemLink = document.createElement("a");
1116                    itemLink.href = itemURL;
1117
1118                    itemPage.appendChild(itemLink);
1119                    if (priceMode !== "Price") {
1120                        c.appendChild(itemPage);
1121
1122                        var NOSHI = pi_cart.querySelector("[value*='結び']");
1123
1124                        if (NOSHI == undefined || location.pathname.split("/")[4] == undefined) {
1125                            itemLink.innerText = "商品の詳細を見る"; //熨斗オプションなしorカテゴリーページ
1126                        } else {
1127                            if (OPTION == undefined) {
1128                                itemLink.innerText = " 贈り物はこちらから";
1129                            } else {
1130                                if (wrappingOptName !== undefined) {
1131                                    itemLink.innerText = itemName + "の詳細を見る";
1132                                } else {
1133                                    itemLink.innerText = " その他の贈り物はこちら";
1134                                }
1135                            }
1136                        }
1137                    } else {
1138                        c.appendChild(itemPage);
1139                        if (location.pathname.split("/")[4] == undefined) {
1140                            itemLink.innerText = "商品の詳細を見る";
1141                        } else {
1142                            itemLink.innerText = itemName + "の詳細を見る";
1143                        }
1144                    }
1145
1146                    if (priceMode !== "Price") {
1147                        //JDG押し分け(無理やり)
1148                        var slctVAR = c.querySelectorAll("[id^='selectVAR_']");
1149                        if (slctVAR.length !== 0) {
1150                            Array.prototype.forEach.call(slctVAR, (v) => {
1151                                var slctItem = c.getElementsByClassName(v.id);
1152                                v.addEventListener("change", function (event) {
1153                                    Array.prototype.forEach.call(slctItem, (item) => {
1154                                        if (event.target.checked == true) {
1155                                            item.disabled = false;
1156                                            var idNum = v.id.replace("selectVAR_", "").toString(10);
1157
1158                                            if (idNum == 1) {
1159                                                slctVAR[1].checked = false;
1160                                                var slctvar_1 =
1161                                                    slctVAR[1].parentElement.querySelectorAll("[class^='selectVAR_']");
1162                                                Array.prototype.forEach.call(slctvar_1, (slct) => {
1163                                                    slct.disabled = true;
1164                                                });
1165
1166                                                slctVAR[2].checked = false;
1167                                                var slctvar_2 =
1168                                                    slctVAR[2].parentElement.querySelectorAll("[class^='selectVAR_']");
1169                                                Array.prototype.forEach.call(slctvar_2, (slct) => {
1170                                                    slct.disabled = true;
1171                                                });
1172
1173                                                slctVAR[3].checked = false;
1174                                                var slctvar_3 =
1175                                                    slctVAR[3].parentElement.querySelectorAll("[class^='selectVAR_']");
1176                                                Array.prototype.forEach.call(slctvar_3, (slct) => {
1177                                                    slct.disabled = true;
1178                                                });
1179
1180                                                slctVAR[4].checked = false;
1181                                                var slctvar_4 =
1182                                                    slctVAR[4].parentElement.querySelectorAll("[class^='selectVAR_']");
1183                                                Array.prototype.forEach.call(slctvar_4, (slct) => {
1184                                                    slct.disabled = true;
1185                                                });
1186                                            }
1187                                            if (idNum == 2) {
1188                                                slctVAR[0].checked = false;
1189                                                var slctvar_0 =
1190                                                    slctVAR[0].parentElement.querySelectorAll("[class^='selectVAR_']");
1191                                                Array.prototype.forEach.call(slctvar_0, (slct) => {
1192                                                    slct.disabled = true;
1193                                                });
1194
1195                                                slctVAR[2].checked = false;
1196                                                var slctvar_2 =
1197                                                    slctVAR[2].parentElement.querySelectorAll("[class^='selectVAR_']");
1198                                                Array.prototype.forEach.call(slctvar_2, (slct) => {
1199                                                    slct.disabled = true;
1200                                                });
1201
1202                                                slctVAR[3].checked = false;
1203                                                var slctvar_3 =
1204                                                    slctVAR[3].parentElement.querySelectorAll("[class^='selectVAR_']");
1205                                                Array.prototype.forEach.call(slctvar_3, (slct) => {
1206                                                    slct.disabled = true;
1207                                                });
1208                                                slctVAR[4].checked = false;
1209                                                var slctvar_4 =
1210                                                    slctVAR[4].parentElement.querySelectorAll("[class^='selectVAR_']");
1211                                                Array.prototype.forEach.call(slctvar_4, (slct) => {
1212                                                    slct.disabled = true;
1213                                                });
1214                                            }
1215                                            if (idNum == 3) {
1216                                                slctVAR[0].checked = false;
1217                                                var slctvar_0 =
1218                                                    slctVAR[0].parentElement.querySelectorAll("[class^='selectVAR_']");
1219                                                Array.prototype.forEach.call(slctvar_0, (slct) => {
1220                                                    slct.disabled = true;
1221                                                });
1222
1223                                                slctVAR[1].checked = false;
1224                                                var slctvar_1 =
1225                                                    slctVAR[1].parentElement.querySelectorAll("[class^='selectVAR_']");
1226                                                Array.prototype.forEach.call(slctvar_1, (slct) => {
1227                                                    slct.disabled = true;
1228                                                });
1229
1230                                                slctVAR[3].checked = false;
1231                                                var slctvar_3 =
1232                                                    slctVAR[3].parentElement.querySelectorAll("[class^='selectVAR_']");
1233                                                Array.prototype.forEach.call(slctvar_3, (slct) => {
1234                                                    slct.disabled = true;
1235                                                });
1236                                                slctVAR[4].checked = false;
1237                                                var slctvar_4 =
1238                                                    slctVAR[4].parentElement.querySelectorAll("[class^='selectVAR_']");
1239                                                Array.prototype.forEach.call(slctvar_4, (slct) => {
1240                                                    slct.disabled = true;
1241                                                });
1242                                            }
1243                                            if (idNum == 4) {
1244                                                slctVAR[0].checked = false;
1245                                                var slctvar_0 =
1246                                                    slctVAR[0].parentElement.querySelectorAll("[class^='selectVAR_']");
1247                                                Array.prototype.forEach.call(slctvar_0, (slct) => {
1248                                                    slct.disabled = true;
1249                                                });
1250
1251                                                slctVAR[1].checked = false;
1252                                                var slctvar_1 =
1253                                                    slctVAR[1].parentElement.querySelectorAll("[class^='selectVAR_']");
1254                                                Array.prototype.forEach.call(slctvar_1, (slct) => {
1255                                                    slct.disabled = true;
1256                                                });
1257
1258                                                slctVAR[2].checked = false;
1259                                                var slctvar_2 =
1260                                                    slctVAR[2].parentElement.querySelectorAll("[class^='selectVAR_']");
1261                                                Array.prototype.forEach.call(slctvar_2, (slct) => {
1262                                                    slct.disabled = true;
1263                                                });
1264                                                slctVAR[4].checked = false;
1265                                                var slctvar_4 =
1266                                                    slctVAR[4].parentElement.querySelectorAll("[class^='selectVAR_']");
1267                                                Array.prototype.forEach.call(slctvar_4, (slct) => {
1268                                                    slct.disabled = true;
1269                                                });
1270                                            }
1271                                            if (idNum == 6) {
1272                                                slctVAR[0].checked = false;
1273                                                var slctvar_0 =
1274                                                    slctVAR[0].parentElement.querySelectorAll("[class^='selectVAR_']");
1275                                                Array.prototype.forEach.call(slctvar_0, (slct) => {
1276                                                    slct.disabled = true;
1277                                                });
1278
1279                                                slctVAR[1].checked = false;
1280                                                var slctvar_1 =
1281                                                    slctVAR[1].parentElement.querySelectorAll("[class^='selectVAR_']");
1282                                                Array.prototype.forEach.call(slctvar_1, (slct) => {
1283                                                    slct.disabled = true;
1284                                                });
1285
1286                                                slctVAR[2].checked = false;
1287                                                var slctvar_2 =
1288                                                    slctVAR[2].parentElement.querySelectorAll("[class^='selectVAR_']");
1289                                                Array.prototype.forEach.call(slctvar_2, (slct) => {
1290                                                    slct.disabled = true;
1291                                                });
1292                                                slctVAR[3].checked = false;
1293                                                var slctvar_3 =
1294                                                    slctVAR[3].parentElement.querySelectorAll("[class^='selectVAR_']");
1295                                                Array.prototype.forEach.call(slctvar_3, (slct) => {
1296                                                    slct.disabled = true;
1297                                                });
1298                                            }
1299                                        } else {
1300                                            item.disabled = true;
1301                                        }
1302                                    });
1303                                });
1304                            });
1305                        }
1306
1307                        //在庫なしアイテム購入不可
1308                        var stock_info = c.querySelectorAll(".stock_info");
1309                        var nostock_info = c.getElementsByClassName("nostock");
1310                        if (priceMode !== "Price") {
1311                            Array.prototype.forEach.call(stock_info, (stock) => {
1312                                if (stock.innerText.indexOf("×") !== -1) {
1313                                    //在庫なしバリエーションの選択ボタン使用不可
1314                                    var noStockItem = stock.parentElement.getElementsByClassName("selectItem")[0];
1315                                    if (noStockItem !== undefined) {
1316                                        noStockItem.firstChild.disabled = true;
1317                                    }
1318
1319                                    //在庫表示バリエーション数と在庫なしバリエーション数が同じなら購入ボタン使用不可
1320                                    if (stock_info.length == nostock_info.length) {
1321                                        c.querySelector("[type='submit']").disabled = true;
1322                                        c.querySelector(".spSubmit").innerText = "在庫なし";
1323                                    }
1324                                }
1325                            });
1326                        }
1327
1328                        //肴味噌表示制限
1329                        if (MISO.test(ITEMNO) == true) {
1330                            //1~3月
1331                            var JANtoMAR_start = new Date(myD_y, 0, 1, 0, 0, 0); //開始
1332                            var JANtoMAR_end = new Date(myD_y, 2, 31, 23, 59, 59); // 終了
1333                            var JANtoMAR_myS = JANtoMAR_start.getTime();
1334                            var JANtoMAR_myE = JANtoMAR_end.getTime();
1335                            //4~6月
1336                            var APRtoJUN_start = new Date(myD_y, 3, 1, 0, 0, 0); //開始
1337                            var APRtoJUN_end = new Date(myD_y, 5, 31, 23, 59, 59); // 終了
1338                            var APRtoJUN_myS = APRtoJUN_start.getTime();
1339                            var APRtoJUN_myE = APRtoJUN_end.getTime();
1340                            //7~9月
1341                            var JULtoSEP_start = new Date(myD_y, 6, 1, 0, 0, 0); //開始
1342                            var JULtoSEP_end = new Date(myD_y, 8, 30, 23, 59, 59); // 終了
1343                            var JULtoSEP_myS = JULtoSEP_start.getTime();
1344                            var JULtoSEP_myE = JULtoSEP_end.getTime();
1345                            //10~12月
1346                            var OCTtoDEC_start = new Date(myD_y, 9, 1, 0, 0, 0); //開始
1347                            var OCTtoDEC_end = new Date(myD_y, 11, 31, 23, 59, 59); // 終了
1348                            var OCTtoDEC_myS = OCTtoDEC_start.getTime();
1349                            var OCTtoDEC_myE = OCTtoDEC_end.getTime();
1350
1351                
1351            //期間以外のバリエーションを削除
1352                            var varDt = c.querySelectorAll("dt");
1353                            if (JANtoMAR_myS <= myD && JANtoMAR_myE >= myD) {
1354                                Array.prototype.forEach.call(varDt, (miso) => {
1355                                    if (miso.innerText.indexOf("1月~3月") == -1) {
1356                                        miso.parentElement.parentElement.remove();
1357                                    }
1358                                });
1359                            }
1360                            if (APRtoJUN_myS <= myD && APRtoJUN_myE >= myD) {
1361                                Array.prototype.forEach.call(varDt, (miso) => {
1362                                    if (miso.innerText.indexOf("4月~6月") == -1) {
1363                                        miso.parentElement.parentElement.remove();
1364                                    }
1365                                });
1366                            }
1367                            if (JULtoSEP_myS <= myD && JULtoSEP_myE >= myD) {
1368                                Array.prototype.forEach.call(varDt, (miso) => {
1369                                    if (miso.innerText.indexOf("7月~9月") == -1) {
1370                                        miso.parentElement.parentElement.remove();
1371                                    }
1372                                });
1373                            }
1374                            if (OCTtoDEC_myS <= myD && OCTtoDEC_myE >= myD) {
1375                                Array.prototype.forEach.call(varDt, (miso) => {
1376                                    if (miso.innerText.indexOf("10月~12月") == -1) {
1377                                        miso.parentElement.parentElement.remove();
1378                                    }
1379                                });
1380                            }
1381                        }
1382                    }
1383                });
1384        });
1385    },
1386    false
1387);

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.