小草牛肉坊_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