![](/img/trans.png)
[英]Why doesn't the following Javascript code (to set CSS style) work?
[英]Javascript code hiding a div doesn't work (CSS @media rule doesn't work either)- 'cannot read property style of null'
所以,我有一个button
, display
在click
事件上切换div
。 它工作正常。 但是,我无法使用几乎相同的代码隐藏相同的div
(但是,我想在屏幕变得太大后切换此div
,而不是在单击后),因为我遇到了标题中的问题 - 'cannot read property null 样式
不起作用的部分(在屏幕变得太大后隐藏一个div
:
if (screen.width > 900) {
document.getElementById('klik').style.display = 'none';
}
以及有效的部分( button
使用click
event
切换div
):
function showDiv() {
if (document.getElementById('klik').style.display == 'block'){
document.getElementById('klik').style.display = 'none';
}
else{
document.getElementById('klik').style.display = 'block';
}
}
我写这段代码是因为我想做一个可扩展的菜单,在点击它后显示一个带有列表项的div
。 菜单button
仅在screen-width <= 900px
时可见,如果screen-width > 900px
我有一个正常的导航栏并且button
消失。
我是不是忘记了什么? 我是 Javascript 的新手。 还多了一个东西─它也不会使用工作@media
规则,但是我可以改变background-color
与@media
。 我希望它会有所帮助。 也提前致谢。
注意两个问题:
确保您要更改其display
的元素具有id="klik"
下面的代码只会执行一次。
if (screen.width > 900) { document.getElementById('klik').style.display = 'none'; }
event
来在每次resize
屏幕resize
时运行它。 此外, screen.width
将始终返回显示的width
。 您正在寻找的是window.innerWidth
所以一个可能的解决方案:
window.addEventListener('resize', function(){ document.getElementById("screen").innerHTML = window.innerWidth.toString() + "px"; if(window.innerWidth < 900) { //Perform your desired Executions Here } });
<div id="screen"></div>
这将在每次触发window.onresize
时运行代码。 而这正是 CSS 中的@media
所做的。 它适用于 javascript 意义上的幕后window.onresize
。
注意:我添加了一个关于如何使用screen.resize
的简单说明,您可以将其用作基于特定范围修改元素属性的基础。 您需要做的就是确保您在该块内进行样式设置并且它会起作用。
嗯,实际上这正是媒体查询的目的。 你试过了吗
@media (min-width: 900px) {
#klik {
display: none;
}
}
如果这不起作用:是否还有其他 css 样式可能会覆盖该特定样式? 类似 #klik { display: block !important; } ...?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.