2013-08-27 46 views
3

我想隐藏divA并显示divB。如果我点击一个按钮,我想隐藏divB并显示divA。我不想使用JQuery。display ='none'在javascript中不起作用

我有麻烦在网页加载时隐藏divA。当我点击按钮时,divB被正确隐藏。

我的文档

<script> 
    var doNotShow= document.getElementById('divA'); 
    doNotShow.style.display = 'none'; 
</script> 

的事情是开始时加入这一点,这是行不通的。奇怪的是,当后来,我试图通过按钮点击隐藏divB,然后divB隐藏它应该。 divA位于文件中的javascript部分之后。

+2

为什么不直接设置'divA'的CSS来'显示:none' –

+1

“耍大牌是文件中的JavaScript部分之后。” < - 这是问题。将脚本标记放置在HTML部分之后,它将起作用 –

+0

确保不要使用JavaScript来初始隐藏您的元素,除非在页面加载时不总是隐藏它。只需使用像我(和@PedroEstrada)建议的CSS规则。它更加优雅高效。 – plalx

回答

8

我的文档

年初加入本与文档中存在的查询ID必须后执行document.getElementById元素,否则null将被退回。

您可以将脚本标记移动到页面的底部(或者简单地放在这些元素之后),或者将其包装在window.onload处理程序中。


这是很好的做法,有<script>标签中的结束</body>因此,所有的元素都已经存在于页之前的权利,你不必担心window.onload或DOM就绪(DOMContentLoaded)处理器封装代码。

+1

谢谢,它工作得很好。 –

1

JavaScripts在读取时执行。如果在脚本之后定义了divA,那么就没有任何东西可以执行脚本了,如果您在Firefox中使用Firebug或Chrome中的开发人员工具(会出现TypeError),您将看到该脚本。

1

在DOM中存在​​之前,您的代码正在运行。这就是为什么它不起作用。

要解决您当前的解决方案的问题,请在文档中的​​标记之后放置脚本。

但是,您不需要使用JavaScript,并且可能不应该最初隐藏您的​​元素。您可以使用下面的CSS规则代替:

#divA { display: none; } 
相关问题