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

JS实现网页标题提取时If语句生效但Else语句不生效问题求助

问题原因定位
  • document.getElementsByTagName() 方法无论是否找到对应元素,都会返回类数组的 HTMLCollection 集合对象,就算没有匹配元素也只会返回空集合,而空集合在JavaScript的布尔判断中属于真值(truthy),所以你的if判断条件永远成立,else分支自然永远不会触发。
  • 你代码中同时使用getElementsByTagName和querySelectorAll两个DOM查询方法属于冗余操作,保留一个即可。
修复后的代码
function headingsEx() {
    let h = ["h1", "h2", "h3", "h4", "h5", "h6"];
    for (let i of h) {
        let foundHs = document.querySelectorAll(i);
        // 改为判断匹配到的元素集合长度是否大于0
        if (foundHs.length > 0) {
            for (let c of foundHs) {
                console.log({ [i]: c.textContent });
            }
        } else {
            console.log(i + " doesn't exist");
        }
    }
}

headingsEx();
补充说明

如果要保留getElementsByTagName写法,判断逻辑一致,只要判断返回集合的length属性是否大于0即可:

if (document.getElementsByTagName(i).length > 0) {
  // 存在对应标题的逻辑
} else {
  // 不存在的逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:54:01