首页/ mobileweb/ 小草牛肉坊/ 代码预览

💻 代码预览 · 小草牛肉坊

mw_food · 上传者 小草网络
← 返回详情
小草牛肉坊_H5/app.js · 约 3211 字符
1// 小草牛肉坊 · 交互逻辑
2document.addEventListener('click', function (e) {
3  var t = e.target.closest('[data-toast]');
4  if (t) { toast(t.getAttribute('data-toast')); }
5  var ct = e.target.closest('.cat-tab');
6  if (ct) {
7    var wrap = ct.parentElement;
8    [...wrap.children].forEach(function (x) { x.classList.remove('sel'); });
9    ct.classList.add('sel');
10    var kw = ct.textContent;
11    var cards = document.querySelectorAll('.beef-card');
12    cards.forEach(function (c) {
13      c.style.display = (kw === '全部' || c.getAttribute('data-cat') === kw) ? 'flex' : 'none';
14    });
15  }
16  var so = e.target.closest('.sort-bar span');
17  if (so) {
18    var w2 = so.parentElement;
19    [...w2.children].forEach(function (x) { x.classList.remove('on'); });
20    so.classList.add('on');
21  }
22  var sp = e.target.closest('.spec-opt');
23  if (sp) {
24    var grp = sp.parentElement;
25    [...grp.children].forEach(function (x) { x.classList.remove('sel'); });
26    sp.classList.add('sel');
27  }
28  var sn = e.target.closest('.sr-num i');
29  if (sn) {
30    var b = sn.parentElement.querySelector('b');
31    var v = parseInt(b.textContent) || 1;
32    v = sn.textContent === '+' ? v + 1 : Math.max(1, v - 1);
33    b.textContent = v;
34  }
35  var ci = e.target.closest('.ci-num i');
36  if (ci) {
37    var b = ci.parentElement.querySelector('b');
38    var v = parseInt(b.textContent) || 1;
39    v = ci.textContent === '+' ? v + 1 : Math.max(1, v - 1);
40    b.textContent = v;
41  }
42  var ck = e.target.closest('.ci-check');
43  if (ck) { ck.parentElement.classList.toggle('checked'); }
44  var opt = e.target.closest('.cb-val .opt');
45  if (opt) {
46    var grp = opt.parentElement;
47    [...grp.children].forEach(function (x) { x.classList.remove('sel'); });
48    opt.classList.add('sel');
49  }
50  var sg = e.target.closest('.sign-btn');
51  if (sg && !sg.classList.contains('done')) { sg.classList.add('done'); sg.textContent = '今日已签到 +10 积分'; toast('签到成功,积分 +10'); }
52  var rg = e.target.closest('.recharge-opt');
53  if (rg) {
54    var grp = rg.parentElement;
55    [...grp.children].forEach(function (x) { x.classList.remove('sel'); });
56    rg.classList.add('sel');
57  }
58  var cp = e.target.closest('.cc-btn');
59  if (cp) { cp.textContent = '已领取'; cp.style.opacity = '.6'; toast('优惠券已到账'); }
60});
61// 秒杀倒计时
62(function () {
63  var box = document.querySelector('.sk-time');
64  if (!box) return;
65  var total = 2 * 3600 + 13 * 60 + 45;
66  setInterval(function () {
67    total--;
68    if (total < 0) total = 86399;
69    var h = Math.floor(total / 3600), m = Math.floor(total % 3600 / 60), s = total % 60;
70    var z = function (n) { return n < 10 ? '0' + n : '' + n; };
71    box.innerHTML = '<i>' + z(h) + '</i>:<i>' + z(m) + '</i>:<i>' + z(s) + '</i>';
72  }, 1000);
73})();
74function toast(msg) {
75  var d = document.createElement('div');
76  d.style.cssText = 'position:fixed;left:50%;bottom:110px;transform:translateX(-50%);background:rgba(91,42,20,.9);color:#fff;padding:10px 20px;border-radius:20px;font-size:13px;z-index:999';
77  d.textContent = msg;
78  document.body.appendChild(d);
79  setTimeout(function () { d.remove(); }, 1800);
80}
81