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

JS如何在兄弟节点子div为空时隐藏指定div并优化代码

现有代码存在的问题
  • 变量名拼写错误:你声明的变量是pgpShortcode,if判断中错误写成了pqpShortcode,运行时会直接抛出未定义变量的报错。
  • 判断逻辑错误:includes('')对任意字符串都会返回true,无论文本内容是否为空,所以你的代码会始终执行隐藏逻辑,完全达不到判断效果。
  • 没有处理空白字符干扰:如果Produktgrundpreis-Shortcode的子div里只有换行、空格这类空白字符,innerText不会是空字符串,你原本的判断逻辑会失效。
  • 缺少函数调用:你只定义了pgpSichtbarkeit函数,没有主动调用的代码,逻辑不会自动执行。
  • 缺少DOM加载判断:如果JS代码在DOM还没渲染完成时就运行,getElementById会返回null,触发空指针报错。
优化实现代码
// 等待页面DOM完全渲染后再执行逻辑
document.addEventListener('DOMContentLoaded', function () {
  pgpSichtbarkeit()
})

function pgpSichtbarkeit() {
  // 提前获取两个目标元素,判断是否存在
  const pgpTextEl = document.getElementById('Produktgrundpreis-Text')
  const pgpShortcodeEl = document.getElementById('Produktgrundpreis-Shortcode')
  if (!pgpTextEl || !pgpShortcodeEl) return

  // 去除文本前后所有空白字符后再判断是否为空
  const shortcodeContent = pgpShortcodeEl.innerText.trim()
  if (shortcodeContent === '') {
    pgpTextEl.style.display = 'none'
  }
  // 如果需要内容不为空时自动显示,可以加下面的else逻辑
  // else {
  //   pgpTextEl.style.display = 'block'
  // }
}
优化说明
  • 新增DOMContentLoaded监听,保证DOM元素渲染完成后再执行获取逻辑,避免获取不到元素的问题
  • 先判断两个目标元素是否存在,避免空指针报错
  • 使用trim()清除文本前后的空格、换行、制表符等空白字符,避免空标签内的空白字符干扰判断结果
  • 直接判断处理后的文本是否等于空字符串,逻辑精准没有歧义
  • 变量名命名更清晰,没有拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:27:03