本文介绍如何扩展 javascript 搜索功能,使其不再局限于单一 html 标签(如仅 `h1`),而是支持同时检索 `h1`、`h3` 和 `p` 等多个标签内的文本内容,并实现大小写不敏感、部分匹配的实时过滤效果。
在构建动态搜索栏时,常见误区是仅针对某一个标题标签(如 h1)进行内容匹配,导致搜索范围过窄——用户输入“Roleplaying Game”却因该文本位于
标签中而无法命中目标卡片。根本原因在于原代码使用 item.querySelector(“h1”) 强制限定单个元素,且未处理查询失败(如 h1 不存在时返回 null)引发的运行时错误。
正确解法是:先批量获取所有候选标签元素,再逐个判断是否包含搜索关键词。推荐使用 querySelectorAll(“h1, h3, p”) 获取全部匹配节点,结合扩展运算符 […nodeList] 转为数组,再用 Array.prototype.some() 进行存在性校验——只要任一标签内容包含关键词,即视为该卡片“匹配”,应保持可见。