显示div onclick不工作(Javascript)
这里是Javascript新手。任何人都可以让我知道我的代码有什么问题吗?要显示的div在单击后不显示,我不明白为什么显示div onclick不工作(Javascript),javascript,Javascript,这里是Javascript新手。任何人都可以让我知道我的代码有什么问题吗?要显示的div在单击后不显示,我不明白为什么 let div=document.getElementById('div-to-show'); 函数openDiv(){ 如果(div.style.display=='none'){ div.style.display='block'; } } #要显示的div{ 显示:无; } 集团 我看得见 这里有两个问题 首先,您不是使用onclick=“openDiv”调用函数-您必
let div=document.getElementById('div-to-show');
函数openDiv(){
如果(div.style.display=='none'){
div.style.display='block';
}
}
#要显示的div{
显示:无;
}
集团
我看得见
这里有两个问题 首先,您不是使用
onclick=“openDiv”
调用函数-您必须将()
放在函数名之后才能调用它,例如onclick=“openDiv()”
其次,尽管您有一个CSS规则display:none
,但这不会导致元素本身的CSS属性发生变化;它仍然是空字符串:
let div=document.getElementById('div-to-show');
函数openDiv(){
console.log(div.style.display);
}
#要显示的div{
显示:无;
}
集团
我看得见
onclick=openDiv
应替换为onclick=openDiv()
display
css样式,以在javascript上获得div.style.display
document.getElementById(“…”).style
将只包含在html标记style
属性上定义的样式属性。仅为了进行比较,需要在html文件上直接设置display
属性let div=document.getElementById('div-to-show');
函数openDiv(){
如果(div.style.display=='none'){
div.style.display='block';
}
}
集团
我看得见
#节目组{
显示:无;
}
集团
我看得见
让div=document.getElementById('div-to-show');
函数openDiv(){
if(window.getComputedStyle(div.display=='none'){
div.style.display='block';
}
}
在您的代码中写入onclick的方式是错误的
,您需要以以下方式写入onclick:
<p onclick="openDiv()">Clique</p>
集团
然后再试一次。您好,正如这里的一些其他示例所解释的,您应该使用addEvenlListener。如果只需要单击事件上显示div的内容,则不需要If语句。您可以向div添加一个类来设置display:none。然后在代码中,您只需要在div的类列表上调用remove。如果该类不在类列表中,这将不会抛出错误或执行任何操作。因此,不需要实现任何检查逻辑 使用hidden类可以使您不需要知道div元素最初的显示值。不用担心
let div=document.getElementById('div-to-show'))
document.getElementById('p按钮')。addEventListener(“单击”,openDiv);
函数openDiv(){
div.classList.remove('hidden');
}
#div-to-show.hidden{
显示:无;
}
集团
我看得见
应该是
onclick=“openDiv()”
。但是你应该考虑使用JavaScript代替,使用<代码>让p=文档.QuestS选择器(‘P’);p、 addEventListener(“单击”,openDiv)代码>。谢谢,为什么使用EventListener更好?这是关于关注点分离的。HTML提供了文档的结构;文本的含义和相对重要性。JavaScript提供了行为;当用户与文档交互时会发生什么。CSS提供了文档的外观;元素对用户的显示方式。我认为这是更好的方式,它也适用于内联样式
如果要使用getComputedStyle
,应该缓存结果,因为它是一个活动的csssStyleDeclaration
对象,所以不必每次单击都运行该函数。还有。。。