const plan = new URLSearchParams(location.search).get('plan')
  || localStorage.getItem('plan') || 'pro';
document.querySelector('[data-plan=' + plan + ']')?.classList.add('is-active');

比较表进来默认高亮中间那个套餐,切到另一个再刷新,高亮回到第一个,下面的价格和按钮也跟着变。换设备后表现一样。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:默认选中项写在 HTML 的 class 里,切换只改样式没有写进 URL 或本地存储。刷新后模板重新按第一个套餐渲染。

围绕「比较表默认选中」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

处理上按这个顺序:选中状态写进查询参数或 localStorage,加载时优先读它;找不到记录时再回退到模板默认值,别直接取第一项;高亮和价格用同一份状态,避免一个变一个不变。

确认没问题再收工,选中中间套餐后刷新,高亮和价格都停在同一个套餐,换个浏览器才回到默认值。

作者 9823189