显示为空的Javascript元素:无
我创建了一个页面,默认情况下,显示为空的Javascript元素:无,javascript,dom-events,Javascript,Dom Events,我创建了一个页面,默认情况下,element1.style.display='none'。现在我有了另一个元素,element2,单击它时会显示element1。但是当尝试将element1设置为设置element1.style.display=“block”的函数时,会出现一个错误,提示element1为空。我理解这是因为默认情况下display=none 我如何解决这个问题?这是使用Javascript而不是jQuery var hash = location.hash; alert(ha
element1.style.display='none'
。现在我有了另一个元素,element2
,单击它时会显示element1
。但是当尝试将element1
设置为设置element1.style.display=“block”
的函数时,会出现一个错误,提示element1
为空。我理解这是因为默认情况下display=none
我如何解决这个问题?这是使用Javascript而不是jQuery
var hash = location.hash;
alert(hash);
function init() {
if( hash == '#menu-a' || hash == '' ) {
document.getElementById('menu-a').style.display = 'block';
}
else if( hash == '#menu-b' ) {
document.getElementById('menu-b').style.display = 'block';
}
else {
document.getElementById('menu-c').style.display = 'block';
}
}
window.onload=init;
如果隐藏元素的顺序始终相同,则可以尝试使用getElementsByTagName(“”[arrayindex])访问它。是否有可能在dom就绪之前触发javascript
element1
在您想要访问dom树时是否存在于dom树中
我理解这是因为默认情况下display=none
没有。这是因为没有为变量赋值
我猜您正期待一个带有id=“element1”
的元素自动创建一个名为element1
的JavaScript变量-它不应该这样做
document.getElementById('element1').style.display = 'block';
您应该在
元素
初始化后立即执行display:block
,然后在初始化后立即将其还原为display:none
。我实际上遇到了一个类似的问题:并非所有浏览器都以相同的方式处理元素display:none
(或至少其子元素)。我将一些SVG对象放在两个div中,我想显示其中一个。在初始化期间,我对SVG元素进行了一些操作(更改SVG中的一些文本元素)。这在Firefox上运行得很好,但在Opera、Chrome和IE上却失败了。
在这些浏览器中,当试图使用document.getElementById(myID)
获取div中的元素时,display:none的div中的元素给出了空结果。第一个解决方法是仅在初始化之后设置display:none
属性(这是有效的),但是当我想再次显示它们时,所有初始化都丢失了(文本标签都是默认的)。
我认为这证明了带有display:none
的DIV的内容以某种方式从DOM中清除,而不是简单地隐藏。
我还尝试使用visibility:hidden
而不是display:none
,但这将页面布局弄得一团糟。到目前为止,似乎对所有浏览器都有效的唯一解决方案是将我想要隐藏的DIV放置在“外层空间”中,如
我假设您正在更改该元素的样式,甚至在html页面中生成该元素之前。当您尝试访问网页中的某个元素时,如果该元素在该时间点在网页中不可用,则返回
Null
我的建议是在这些元素完全加载后运行javascript部分,使用诸如,
onclick
,onload
等属性 引用一个元素应该足够好了。很可能是范围问题,并且从他想要访问它的位置看不到element1
。但是如果没有代码,就真的没有什么可以说的了(更好的解决方案是给元素一个ID并使用getElementById
).tl;dr版本:正确环境中的getElementById是最佳解决方案。你是对的。完整注释:由于没有提供任何代码,我假设所有元素都正确地进行了ide,并且getElementById仍然无法工作。当然,getElementById是最好的解决方案,我只是想提供一些快速的解决方案,尝试以较小的压力解决这个问题;警报(散列);函数init()window.onload=init;我们需要诊断——或者更确切地说是确认——我们的直觉,我们还需要html代码。或者你可以自己检查element1的标记中是否设置了id=“element1”。html代码中有错误,这是使用id名称时的一个输入错误。这是一个愚蠢的错误,我花了很多时间来修复它。从中吸取的教训
position: absolute;
top: -9999px;
left: -9999px;