必须用实现错题知识点语义化分组,禁用class模拟;每个section仅对应一个topic,多知识点题需拆分;data-topic是JS筛选、导出、AI分析的唯一可靠依据。

错题HTML结构必须带知识点语义标签
纯靠CSS类名或div嵌套做分组,后期根本没法自动归类——浏览器不认“class="trigonometry"”是三角函数,它只认标准语义。真正能被脚本识别、筛选、导出的分组基础,是用配合data-topic属性。
常见错误:把所有错题塞进一个 有了 使用场景:点击“查看所有数列题”,页面滚动到第一个 有人写 性能影响很小,但可维护性断崖下跌。一个 错题本最终要存档、跨设备同步、甚至喂给AI分析,这时候HTML结构里的 容易被忽略的是:导出脚本若依赖
实际归类逻辑的复杂点不在HTML怎么写,而在知识点体系是否收敛——
是唯一可靠锚点,比class更易提取、不易误改linear-inequality),避免空格、中文、大小写混用导致JS匹配失败只对应一个data-topic,多知识点题拆成多个section,别用data-topic="a,b,c"——后续filter会崩用querySelectorAll按知识点批量操作DOM
data-topic,归类就变成一行JS的事:document.querySelectorAll('section[data-topic="function-graph"]')直接拿到全部函数图像题,不用遍历、正则、字符串查找。data-topic="sequence",同时高亮所有同组题;导出PDF时只取data-topic="probability"的section。
querySelectorAll("section[data-topic=sequence]")会报错(缺引号)section[data-topic="logarithm-base-e"]
data-属性选择器,若需兼容,改用section[topic]并同步在HTML里写topic="xxx"(但语义性下降)避免用class模拟知识点导致样式与逻辑耦合
.topic-algebra { color: #2563eb; },看起来能分组,但问题立刻出现:换主题色要改CSS,加新知识点要同步增class和CSS规则,导出逻辑还得额外解析class字符串——三处维护,一处改错全崩。data-topic属性,样式由JS动态加class控制,逻辑归逻辑,样式归样式。
section.dataset.topic后,再调element.classList.add('topic-' + topic)
[class*="topic-"]去匹配,这属于class滥用,且无法精准区分topic-trig和topic-trigonometry
data-topic查,别用getElementsByClassName——后者返回HTMLCollection,不支持forEach
导出为JSON时data-topic是唯一可信字段
data-topic就是原始事实。标题文字可能写“二次函数图像”,也可能简写“2次函图”,但data-topic="quadratic-function-graph"始终一致。innerText或textContent抽关键词,遇到“已知f(x)=ax²+bx+c,求顶点”,根本抽不出“quadratic-function-graph”,而dataset.topic永远存在、可控、无歧义。
{"id": "q042", "html": "...", "topic": "quadratic-function-graph", "difficulty": 2}
data-topic当装饰用,它得和后台知识点树严格对齐,否则后续打标签、统计正确率都会偏移分别包裹同一道题的不同解析段落data-topic值一旦定下,就别轻易改。改一个值,所有历史导出、统计脚本、甚至学生书签里的锚点链接全失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











