You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript中判断tagName时LI需大写?求技术解析

function toggleClassDoneOnAndOff(event) {
    if (event.target.tagName === "LI") {
        event.target.classList.toggle("done");
    }
}
ul.addEventListener("click", toggleClassDoneOnAndOff);
为什么判断event.target.tagName要用大写的LI?

这是因为HTML文档环境中,DOM元素的tagName属性会统一返回大写的标签名,不管你在HTML代码里写的是小写<li>、混合大小写<Li>还是大写<LI>。

具体原因拆解:

  • HTML本身是大小写不敏感的标记语言,浏览器解析时会统一处理各类大小写的标签,但DOM规范明确规定,在HTML语境下,tagName的返回值必须是大写字符串。
  • 举个例子:哪怕你页面里写的是<li>待办项</li>,用console.log(event.target.tagName)打印出来的结果也肯定是LI。如果你的判断条件写成=== "li",就永远匹配不上,toggle类的逻辑也就不会触发。

额外补充:如果是XML或严格模式的XHTML文档,tagName会保留标签的原始大小写,但现在绝大多数网页都是HTML5环境,所以不用考虑这种特殊情况,统一用大写判断就没问题。

内容的提问来源于stack exchange,提问作者Hernani Diniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:57:03