【问题标题】:Divs not findable after attaching display:none附加显示后找不到 Div:无
【发布时间】:2025-12-14 09:45:02
【问题描述】:

在 onLoad 函数期间,我设置了几个 div 元素,并将 CSS 属性 display none 分配为“不可见”:

function hideContent() {
    laElements = document.getElementById("content").children;
    for (var i = 0; i < laElements.length; i++) {
        laElements[i].classList.add("hidden");
    }
}
.hidden {
  display: none;
}

稍后我想将其中一个 s 设置回可见(通过删除 CSS 类),但我遇到的问题是无法通过“getElementbyId”找到&lt;div&gt;。 相反,当我调用删除函数时,我得到了错误

TypeError: Cannot read property 'classList' of undefined"。

当我访问覆盖的 &lt;div&gt; 元素时,没有列出更多子元素。似乎属性“display:none”使元素从 DOM 中完全消失。

谁能告诉我我到底做错了什么或如何解决这个问题? 如果可能的话,我更喜欢没有 jQuery 的解决方案。

【问题讨论】:

  • 请在您的问题中提供minimal reproducible example
  • 将 div 设置为 display:hidden 不会将其从 DOM 中删除。您必须在其他地方删除它,或者一开始就没有添加它,或者在 Javascript 中选择错误。
  • 您正在添加“隐藏的”并尝试通过getElementById 访问它。或者向我们展示 html 和其他 javascript 部分,以便我们更清楚地了解。
  • 很抱歉我没有提供足够的信息。在JSFiddle 找到最小的示例唯一的区别 - 没有错误记录在那里。我想这意味着我做了一些非常愚蠢的事情......
  • 使用“可见性:隐藏;”而不是“显示:无;”

标签: javascript html css dom


【解决方案1】:

我认为你的 div 有类而不是 id,所以在 javascript 中你必须写 getElementByClass()

【讨论】: