PageSourceSearch

https://www.at-contact.jp/client_info/ATCONTACT/view/userweb/js/jquery.teiki.change.js?timestamp=1791163393159

js at-contact.jp collected 2026-10-05 03:38:46 UTC 27,414 bytes, 685 lines download raw bytes

1// PC・SP判定用変数
2var teiki_change_mode = null;
3
4// 箱数指定用
5var teiki_set_num;
6
7// 商品パターン01 
8var normal_item_01_flg = false;
9var normal_item_list_01 = [];
10normal_item_list_01.push('K_KZ_CM30Z0_02_M'); // 初回リリース対象
11normal_item_list_01.push('K_KZ_CM30Z0_04_H');
12// ▼切り替え先▼
13// K_KZ_CM30Z0_02_R28
14// K_KZ_CM30Z0_02_R1
15// K_KZ_CM30Z0_02_R2
16// K_KZ_CM30Z0_02_R3
17
18// 商品パターン02 
19var normal_item_02_flg = false;
20var normal_item_list_02 = [];
21normal_item_list_02.push('K_KZ_CM30Z0_06_H'); // 初回リリース対象
22normal_item_list_02.push('K_KZ_CM30Z0_08_H');
23// ▼切り替え先▼
24// K_KZ_CM90Z0_02
25
26// 商品パターン03
27var normal_item_03_flg = false;
28var normal_item_list_03 = [];
29normal_item_list_03.push('K_KZ_CM90Z0_02_M');
30normal_item_list_03.push('K_KZ_CM90Z0_04_H');
31normal_item_list_03.push('K_KZ_CM90Z0_06_H');
32normal_item_list_03.push('K_KZ_CM90Z0_08_H');
33// ▼切り替え先▼
34// K_KZ_CM90Z0_02_R85
35// K_KZ_CM90Z0_02_R120
36
37// 1箱商品の定義
38var item_single_flg = false;
39var item_single_list = [];
40item_single_list.push('K_KZ_CM30Z0_01_M');
41item_single_list.push('K_KZ_CM90Z0_01_M');
42
43// 対象となるバリエーションのID名を定義
44var id_base = 'ITEMPROPERTY_CD_';
45
46$(function()
47{
48  /* 定期購入切り替え初期設定 START ********************************************************************** */
49  // 表示モード(pc or sp)の取得
50  var teiki_change_mode = $('#teiki_change_mode').val();
51  // 現在ページの商品コード
52  var page_item_code = $('#page_item_code').text();
53  // 商品コードの取得判定
54  if(page_item_code)
55  {
56    // パターン01の判定
57    if($.inArray(page_item_code, normal_item_list_01) !== -1) {
58      normal_item_01_flg = true;
59      teiki_set_num = 2; //30枚2箱訴求
60    }
61    // パターン02の判定
62    if($.inArray(page_item_code, normal_item_list_02) !== -1) {
63      normal_item_02_flg = true;
64      teiki_set_num = 6; //30枚6箱から90枚2箱訴求
65    }
66    // パターン03の判定
67    if($.inArray(page_item_code, normal_item_list_03) !== -1) {
68      normal_item_03_flg = true;
69      teiki_set_num = 2; //90枚2箱訴求
70    }
71    // 1箱商品の判定
72    if($.inArray(page_item_code, item_single_list) !== -1) {
73      item_single_flg = true;
74    }
75
76    // パターンに該当する場合のみ
77    if(normal_item_01_flg || normal_item_02_flg || normal_item_03_flg)
78    {
79      // 差額の算出
80      // 通常販売価格
81      var base_price_text = $('#item_teika_zeikomi_here').text();
82      // -------------------------------------
83      // 箱数取得
84      var title_str = $('#page_item_name').text();
85      var current_set_num = title_str.substring(title_str.lastIndexOf('ç®±') - 1, title_str.lastIndexOf('ç®±'));
86      var base_price_num = base_price_text.replace(/\,/g, '').replace('円', '');
87      var teiki_set_count_num = base_price_num / current_set_num * teiki_set_num;
88
89      // PC ==================================================
90      if(teiki_change_mode === 'pc')
91      {
92        // 定期販売価格
93        $('#teiki_change_info > .switch2teiki > ul > li.info_01 > .value').each(function()
94        {
95          // 対象要素オブジェクト取得
96          var parents_block_obj = $(this).parents('.switch2teiki');
97          // 販売価格取得
98          var change_price_text = $(this).text();
99          // 計算用に数値へ変換
100          var change_price_num = change_price_text.replace(/\,/g, '').replace('円', '');
101          // 差分を算出
102          var price_diff_num = Number(teiki_set_count_num) - Number(change_price_num);
103          // 算出結果から表示を切り替え
104          //  -> 金額が同じ場合
105          if(price_diff_num === 0)
106          {
107            // 詳細情報エリアに非表示クラスを追加
108            parents_block_obj.addClass('diff_none');
109          }
110          //  -> 定期購入の方が価格が低い場合
111          else if(price_diff_num > 0)
112          {
113            // 表示用に変換(金額フォーマット)
114            var price_diff_text = String(price_diff_num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
115            // 差額の書き換え
116            parents_block_obj.find('.teiki_title > span > span').text(price_diff_text);
117          }
118          //  -> 上記以外
119          else
120          {
121            // 非表示設定(要素削除)
122            parents_block_obj.find('.teiki_title > span').remove();
123          }
124        });
125
126        // 定期購入切り替えエリアを移動
127        $('#teiki_change_area').insertAfter('.new_item_detail_bt_box:not("#teiki_change_area")');
128      }
129      // ================================================== PC
130      // SP ==================================================
131      else if(teiki_change_mode === 'sp')
132      {
133        // 定期販売価格
134        $('#teiki_change_info > .switch2teiki > ul > li.info_02 > .value').each(function()
135        {
136          // 対象要素オブジェクト取得
137          var parents_block_obj = $(this).parents('.switch2teiki');
138          // 販売価格取得
139          var change_price_text = $(this).text();
140          // 計算用に数値へ変換
141          var change_price_num = change_price_text.replace(/\,/g, '').replace('円', '');
142          // 差分を算出
143          var price_diff_num = Number(teiki_set_count_num) - Number(change_price_num);
144          // 算出結果から表示を切り替え
145          //  -> 金額が同じ場合
146          if(price_diff_num === 0)
147          {
148            // 詳細情報エリアに非表示クラスを追加
149            parents_block_obj.addClass('diff_none');
150          }
151          //  -> 定期購入の方が価格が低い場合
152          else if(price_diff_num > 0)
153          {
154            // 表示用に変換(金額フォーマット)
155            var price_diff_text = String(price_diff_num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
156            // 差額の書き換え
157            parents_block_obj.find('ul > li.info_01 > span').text(price_diff_text);
158          }
159          //  -> 上記以外
160          else
161          {
162            // 非表示設定(要素削除)
163            parents_block_obj.find('ul > li.info_01').empty().addClass('none');
164          }
165        });
166
167        // 定期購入切り替えエリアを移動
168        $('#teiki_change_area').insertAfter('form[name="detailForm"] > div > .cart_in');
169      }
170      // ================================================== SP
171      if(teiki_change_mode === 'pc' || teiki_change_mode === 'sp')
172      {
173        // 定期購入切り替えエリアを表示
174        $('#teiki_change_area').css({'display' : 'block'});
175      }
176      // パターン別処理の実行
177      if(normal_item_01_flg)
178      {
179        // パターン01のセレクトボックスを有効化
180        $('#teiki_change_select_01').parents('.teiki_select_wrap').removeClass('hide');
181        $('#teiki_change_select_01').css({'display' : 'block'});
182        $('#teiki_change_select_01').addClass('active');
183        $('#teiki_change_select_02').parents('.teiki_select_wrap').addClass('hide');
184        $('#teiki_change_select_02').removeClass('active');
185        $('#teiki_change_select_03').parents('.teiki_select_wrap').addClass('hide');
186        $('#teiki_change_select_03').removeClass('active');
187        // ポップアップにクラス名を追加
188        $('#teiki_caution_popup_pc').addClass('set30');
189        $('#teiki_caution_popup_sp').addClass('set30');
190      }
191      else if(normal_item_02_flg)
192      {
193        // パターン01のセレクトボックスを有効化
194        // $('#teiki_change_select_02').parents('.teiki_select_wrap').removeClass('hide');
195        // $('#teiki_change_select_02').css({'display' : 'block'});
196        $('#teiki_change_select_02').addClass('active');
197        $('#teiki_change_select_01').parents('.teiki_select_wrap').addClass('hide');
198        $('#teiki_change_select_01').removeClass('active');
199        $('#teiki_change_select_03').parents('.teiki_select_wrap').addClass('hide');
200        $('#teiki_change_select_03').removeClass('active');
201        // ポップアップにクラス名を追加
202        // $('#teiki_caution_popup_pc').addClass('set90');
203        // $('#teiki_caution_popup_sp').addClass('set90');
204
205        $('#teiki_change_select_block').css({'display' : 'none'});
206
207        if(teiki_change_mode === 'pc') {
208          $('#teiki_change_area').css({'display' : 'flex'});
209        }
210        if(teiki_change_mode === 'sp') {
211          $('#teiki_select_caution_text').css({'display' : 'none'});
212          $('#select_teiki_interval').css({'display' : 'none'});
213          $('#teiki_caution_popup_sp_opener').css({'display' : 'none'});
214          $('#cart_in_btn_teiki').html('<span class="icon_basket"></span>90枚2箱セットを購入する');
215        }
216      }
217      else if(normal_item_03_flg)
218      {
219        // パターン03のセレクトボックスを有効化
220        $('#teiki_change_select_03').parents('.teiki_select_wrap').removeClass('hide');
221        $('#teiki_change_select_03').css({'display' : 'block'});
222        $('#teiki_change_select_03').addClass('active');
223        $('#teiki_change_select_01').parents('.teiki_select_wrap').addClass('hide');
224        $('#teiki_change_select_01').removeClass('active');
225        $('#teiki_change_select_02').parents('.teiki_select_wrap').addClass('hide');
226        $('#teiki_change_select_02').removeClass('active');
227        // ポップアップにクラス名を追加
228        $('#teiki_caution_popup_pc').addClass('set30_04');
229        $('#teiki_caution_popup_sp').addClass('set30_04');
230      }
231
232      // 1箱商品の場合 ==================================================
233      if(item_single_flg)
234      {
235        // 右眼、左眼の選択エリアにそれぞれID名、クラス名を付与
236        $('form[name="detailForm"]').find('select[id^="' + id_base + '"]').each(function(index) {
237          var set_side_class_name = '';
238          // PC ==================================================
239          if(teiki_change_mode === 'pc')
240          {
241            if(index === 0 || index === 1)
242            {
243                // 1つ目と2つ目は右眼
244                set_side_class_name = 'right';
245            }
246            else if(index === 2 || index === 3)
247            {
248              // 3つ目と4つ目は左眼
249              set_side_class_name = 'left';
250            }
251          }
252          // ================================================== PC
253          // SP ==================================================
254          else if(teiki_change_mode === 'sp')
255          {
256            if(index === 0 || index === 1)
257            {
258                // 1つ目と2つ目は左眼
259                set_side_class_name = 'left';
260            }
261            else if(index === 2 || index === 3)
262            {
263              // 3つ目と4つ目は右眼
264              set_side_class_name = 'right';
265            }
266          }
267          // ================================================== SP
268          // クラス名を追加
269          $(this).parents('dl').addClass(set_side_class_name);
270          // ID名を追加
271          $(this).parents('li').attr('id', 'select_' + set_side_class_name + '_block');
272        });
273
274        // 文字列の書き換え
275        var lens_select_title_list_right = ['右眼用の値を選択', '<span>右眼</span>の情報を選択'];
276        changeDisplayText(teiki_change_mode, 'right', '右', lens_select_title_list_right);
277        var lens_select_title_list_left = ['左眼用の値を選択', '<span>左眼</span>の情報を選択'];
278        changeDisplayText(teiki_change_mode, 'left', 'å·¦', lens_select_title_list_left);
279
280        // 非表示エリアを表示状態に切替
281        // PC ==================================================
282        if(teiki_change_mode === 'pc')
283        {
284          // セレクトボックスを表示状態に切替
285          $('#detail .wanted ul.cf > li.unused').css({'display' : 'block'});
286        }
287        // ================================================== PC
288        // SP ==================================================
289        else if(teiki_change_mode === 'sp')
290        {
291          // セレクトボックスを表示状態に切替
292          $('form[name="detailForm"] > div > ul > li#select_right_block').css({'display' : 'block'});
293          // タイトル要素の追加
294          $('form[name="detailForm"] > div > ul > li#select_right_block').before('<li id="select_right_block_title"><span>右眼</span>の情報を選択</li>');
295        }
296        // ================================================== SP
297      }
298      // ================================================== 1箱商品の場合
299      // 定期購入商品の情報を切り替え
300      changeTeikiItem($('#teiki_change_select_block select.active'));
301
302      // SP ==================================================
303      if(teiki_change_mode === 'sp')
304      {
305        // スクロール時
306        $(window).scroll(function ()
307        {
308          moveTeikiChangeArea();
309        });
310
311        // セレクトボックス変更時
312        $('select[id^="ITEMPROPERTY_CD_"]').change(function()
313        {
314          teikiDisplayEvent();
315        });
316      }
317      // ================================================== SP
318    }
319  }
320  /* ********************************************************************** 定期購入切り替え初期設定 END */
321
322
323  /* セレクトボックス変更イベント START ********************************************************************** */
324  $('#teiki_change_select_block .teiki_change_select').on('change', function()
325  {
326    // 定期購入商品の情報を切り替え
327    changeTeikiItem($(this));
328  });
329  /* ********************************************************************** セレクトボックス変更イベント END */
330
331
332  /* 定期購入ボタンのクリックイベント START ********************************************************************** */
333  $('#cart_in_btn_teiki, .cart_in_btn_teiki').on('click', function()
334  {
335    var this_btn = $(this);
336
337    // GAイベントの送信
338    console.log('#cart_in_btn_teiki Click event start');
339    if ('ga' in window) {
340      console.log('#cart_in_btn_teiki Click send start');
341      dataLayer.push({'event':'onclick_event','event_action':'click','event_category':'20210930_teiki_switch','event_label':'item_detail__cart_btn__cart_in_subscription'});
342      console.log('#cart_in_btn_teiki Click send end');
343    }
344    console.log('#cart_in_btn_teiki Click event end');
345
346    // 変数初期化
347    // エラーカウンター
348    var err_cnt = 0;
349    // アラートメッセージ用文字列の配列
350    var msg_list = [];
351    // 選択パラメータの配列
352    var prm_list = [];
353    // 選択パラメータの連想配列(1箱商品用)
354    var prm_obj = {};
355
356    // 1箱商品の場合 ==================================================
357    if(item_single_flg)
358    {
359      $('form[name="detailForm"]').find('select[id^="' + id_base + '"]').each(function()
360      {
361        // 入力チェック
362        var this_obj = $(this);
363        if(this_obj.val())
364        {
365          // 送信パラメータを個別に設定
366          var this_select_title = this_obj.parents('dd').prev('dt').text();
367          if(this_obj.parents('dl.right').size())
368          {
369            if(this_select_title === '右BC')
370            {
371              prm_obj['right_bc'] = this_obj.val().replace('B', 'RB');
372            }
373            else if(this_select_title === '右度数')
374            {
375              prm_obj['right_do'] = this_obj.val().replace('D', 'R');
376            }
377          }
378          else if(this_obj.parents('dl.left').size())
379          {
380            if(this_select_title === 'å·¦BC')
381            {
382              prm_obj['left_bc'] = this_obj.val().replace('B', 'LB');
383            }
384            else if(this_select_title === '左度数')
385            {
386              prm_obj['left_do'] = this_obj.val().replace('D', 'L');
387            }
388          }
389        }
390        else
391        {
392          // 未選択の場合はエラーをカウントアップ
393          err_cnt++;
394        }
395        // アラートメッセージ用に項目名を配列に
395追加
396        msg_list.push(this_obj.parents('dd').prev('dt').text());
397      });
398    }
399    // ================================================== 1箱商品の場合
400    // 2箱以上商品の場合 ==================================================
401    else
402    {
403      // 該当バリエーションの数を取得
404      var prm_cnt = $('form[name="detailForm"] select[id^="' + id_base + '"]').length;
405      // 該当バリエーション分繰り返し数をカウント
406      for(var i = 0; i < prm_cnt; i++)
407      {
408        // 入力チェック
409        var this_obj = $('form[name="detailForm"] select[id="' + id_base + i + '"]');
410        if(this_obj.val())
411        {
412          prm_list.push(this_obj.val());
413        }
414        else
415        {
416          // 未選択の場合はエラーをカウントアップ
417          err_cnt++;
418        }
419        // アラートメッセージ用に項目名を配列に追加
420        msg_list.push(this_obj.parents('dd').prev('dt').text());
421      }
422    }
423    // ================================================== 2箱以上商品の場合
424
425    // エラー判定
426    if(err_cnt > 0)
427    {
428      // エラーの場合はメッセージを設定してアラート表示
429      var msg_str = msg_list.join(',');
430      alert(msg_str + 'を指定してください');
431      return false;
432    }
433    else
434    {
435      // すべての項目が設定されている場合
436      var prm_str = '';
437      // 1箱商品の場合 ==================================================
438      if(item_single_flg)
439      {
440        if(Object.keys(prm_obj).length === 4)
441        {
442          // 選択値のオブジェクトを「-」区切りで文字列に変換
443          prm_str = prm_obj['left_bc'] + '-' + prm_obj['right_bc'] + '-' + prm_obj['left_do'] + '-' + prm_obj['right_do'];
444        }
445      }
446      // ================================================== 1箱商品の場合
447      // 2箱以上商品の場合 ==================================================
448      else
449      {
450        prm_str = prm_list.join('-');
451      }
452      // ================================================== 2箱以上商品の場合
453      // スイッチ先の商品コードを取得してパラメータを生成
454      var set_prm = $('.teiki_change_select.active').val() + '-' + prm_str;
455      // 現在設定中のリンクURLを取得
456      // var now_src = $('#cart_in_btn_teiki').attr('href');
457      var now_src = $(this_btn).attr('href');
458      // 変更後のURLを生成
459      var new_src = now_src + set_prm;
460      // URLの置き換え
461      // $('#cart_in_btn_teiki').attr('href', new_src);
462      $(this_btn).attr('href', new_src);
463      // リンク先へ遷移させる
464      return true;
465    }
466  });
467  /* ********************************************************************** 定期購入ボタンのクリックイベント END */
468
469
470  /* 通常購入ボタンのクリックイベント START ********************************************************************** */
471  $('#cart_in_btn').on('click', function()
472  {
473    // パターンに該当する場合のみ
474    if(normal_item_01_flg || normal_item_02_flg || normal_item_03_flg)
475    {
476      // GAイベントの送信
477      console.log('#cart_in_btn Click event start');
478      if ('ga' in window) {
479        console.log('#cart_in_btn Click send start');
480        dataLayer.push({'event':'onclick_event','event_action':'click','event_category':'20210930_teiki_switch','event_label':'item_detail__cart_btn__cart_in_normal'});
481        console.log('#cart_in_btn Click send end');
482      }
483      console.log('#cart_in_btn Click event end');
484    }
485  });
486  /* ********************************************************************** 通常購入ボタンのクリックイベント END */
487
488
489  /* 定期購入注意事項のポップアップ制御(PC) START ********************************************************************** */
490  if($('#teiki_caution_popup_pc').length) {
491    // ポップアップ設定
492    $('#teiki_caution_popup_pc_opener').colorbox({
493      inline: true,
494      maxWidth: '50%',
495      maxHeight: '90%',
496      fixed: true,
497      opacity: 0.7,
498      onOpen: function() {
499        var ycoord = $(window).scrollTop();
500        $('#colorbox').data('ycoord',ycoord);
501          ycoord = ycoord * -1;
502          $('body').css('position','fixed').css('left','0px').css('right','0px').css('top',ycoord + 'px');
503      },
504      onComplete: function() {},
505      onClosed:function(){
506        $('body').css('position','').css('left','auto').css('right','auto').css('top','auto');
507        $(window).scrollTop($('#colorbox').data('ycoord')); 
508      }
509    });
510    $('#teiki_caution_popup_pc_closer').click(function(){
511      parent.$.fn.colorbox.close(); return false;
512    });
513  }
514  /* ********************************************************************** 定期購入注意事項のポップアップ制御(PC) END */
515
516
517  /* 定期購入注意事項のポップアップ制御(SP) START ********************************************************************** */
518  if($('#teiki_caution_popup_sp').length) {
519    var pos = 0;
520    var spd = 200;
521    // 「詳しくはこちら」クリック時
522    $('#teiki_caution_popup_sp_opener').on('click', function()
523    {
524      // 現在位置の取得
525      pos = $(window).scrollTop();
526      // bodyにスタイルを設定
527      $('body').addClass('fixed').css({'top': -1 * pos});
528      // 詳細エリアを表示
529      $('#teiki_caution_popup_sp').css({'opacity' : '1'});
530      $('#teiki_caution_popup_sp').css({'display' : 'block'});
531      // 詳細情報をアニメーションで表示
532      $('#teiki_caution_popup_sp_inner').stop().animate({
533        bottom: '0px'
534      }, spd, function(){});
535    });
536
537    // 詳細情報を閉じる
538    $('#teiki_caution_popup_sp, #teiki_caution_popup_sp_closer').on('click', function()
539    {
540      // 詳細エリアをアニメーションで非表示
541      $('#teiki_caution_popup_sp').stop().animate({
542        opacity: '0'
543      }, spd, function(){
544        // 詳細エリアの要素を非表示
545        $('#teiki_caution_popup_sp').css({'display' : 'none'});
546        // bodyの設定を元に戻す
547        $('body').removeClass('fixed').css({'top': 0});
548        window.scrollTo(0 , pos);
549      });
550      // 詳細情報をアニメーションで非表示
551      $('#teiki_caution_popup_sp_inner').stop().animate({
552        bottom: '-50vh'
553      }, spd, function(){
554      });
555    });
556    // 詳細情報要素のイベントを停止
557    // -> 親要素のイベントと重複するため
558    $('#teiki_caution_popup_sp_inner').on('click', function(event)
559    {
560      event.stopPropagation();
561    });
562  }
563  /* ********************************************************************** 定期購入注意事項のポップアップ制御(SP) END */
564});
565
566
567/**
568 * バリエーション選択エリアの文字列を書き換え
569 */
570function changeDisplayText(mode, position, str_short, str_long_list)
571{
572  // タイトルを変更
573  // PC ==================================================
574  if(mode === 'pc')
575  {
576    $('#select_' + position + '_block').children('h3').text(str_long_list[0]);
577  }
578  // ================================================== PC
579  // SP ==================================================
580  else if(mode === 'sp' && position === 'left')
581  {
582    $('#select_' + position + '_block').parent('ul').prev('p').html(str_long_list[1]);
583  }
584  // ================================================== SP
585  // 選択肢の項目名を変更
586  $('#select_' + position + '_block dl.' + position).find('dt').each(function()
587  {
588    var this_obj = $(this);
589    var now_text = this_obj.text();
590    var new_text = str_short + now_text;
591    this_obj.text(new_text);
592  });
593  // セレクトボックスの選択肢を変更
594  $('#select_' + position + '_block dl.' + position + ' dd select option').each(function()
595  {
596    var this_obj = $(this);
597    var now_text = this_obj.text();
598    var new_text_01 = now_text.replace('BC', str_short + 'BC');
599    var new_text_02 = new_text_01.replace('度数', str_short + '度数');
600    this_obj.text(new_text_02);
601  });
602}
603
604
605/**
606 * 定期購入商品セレクトボックス変更時のイベント
607 *  -> 定期購入商品情報の更新(表示切り替え)
608 */
609function changeTeikiItem(select_obj)
610{
611    // 一度すべて非表示
612    $('#teiki_change_info > div').removeClass('info_show').addClass('info_hide');
613    // 選択項目の情報のみ表示
614    // 切り替えるID名を設定
615    var this_change_select_id = select_obj.val() + '_info';
616    $('#' + this_change_select_id).removeClass('info_hide').addClass('info_show');
617}
618
619
620/**
621 * 所定の位置までスクロールした際に定期購入情報をアニメーションにて表示(SPのみ)
622 */
623function moveTeikiChangeArea()
624{
625  if(!$('#teiki_change_area').hasClass('moved'))
626  {
627    // カートボタンの位置情報取得
628    var targetPos = $('#cart_in_btn').offset().top;
629    // 現在のスクロール量を取得
630    var scroll = $(window).scrollTop();
631    // デバイスのウィンドウサイズ(高さ)を取得
632    var windowHeight = $(window).height();
633    // スクロール量と指定位置の比較
634    if (scroll > targetPos - windowHeight + windowHeight/5)
635    {
636      // 位置変更(アニメーション)用クラスの追加
637      $('#teiki_change_area').addClass('moved');
638    }
639  }
640}
641
642
643/**
644 * バリエーション全選択時に定期購入情報のアニメーションを実行(SPのみ)
645 */
646function teikiDisplayEvent()
647{
648  // バリエーション「未選択」のカウント
649  var empty_cnt = 0;
650  // バリエーション選択状態の取得
651  $('select[id^="ITEMPROPERTY_CD_"]').each(function()
652  {
653    if($(this).val() === '') { empty_cnt++; }
654  });
655  // 全て選択状態の場合
656  if(empty_cnt === 0)
657  {
658    // 定期情報が見える位置まで表示可能位置までスクロール
659    // カートボタンエリアの要素
660    var cartInObj = $('form[name="detailForm"] .cart_in');
661    // 定期情報エリアの要素
662    var teikiInfoObj = $('#teiki_change_area');
663    // カートボタンエリアの位置情報取得
664    var mPos = cartInObj.offset().top;
665    // デバイスのウィンドウサイズ(高さ)を取得
666    var windowHeight = $(window).height();
667    // カートボタンエリアの高さを取得
668    var cartInHeight = cartInObj.outerHeight(true);
669    // 定期情報エリアの高さを取得
670    var teikiInfoHeight = teikiInfoObj.outerHeight();
671    // 表示対象要素のサイズを設定
672    var displayContentsHeight = cartInHeight + teikiInfoHeight + 20;
673    // スクロール位置を設定
674    var movePos = mPos - windowHeight + displayContentsHeight;
675    // アニメーションでスクロールを実行
676    $('html, body').stop().animate({scrollTop:movePos}, function()
677    {
678      if(!$('#teiki_change_area').hasClass('anm_attention'))
679      {
680        // 表示済み要素にアニメーションを追加
681        $('#teiki_change_area').addClass('anm_attention');
682      }
683    });
684  }
685}

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.