除非单击两次,否则不会触发我的onclick函数。我对javascript很陌生,但到目前为止,我还是在var obj行周围移动,并将==“ none”更改为“ none”?“ empty”;这两件事我都不了解,但看到其他人确实解决了这个问题。两者都不起作用。
<a href="#" onClick="showDiv('show1')">+</a>
function showDiv(id){
var obj = document.getElementById(id);
if( obj.style.display == "none") {
obj.style.display='block'
}
else{
obj.style.display='none'
}
}
<div id="show1">
Roughly 2-3 months.
</div>
最佳答案
您的问题是,您直接使用元素的style
属性。假设您没有在代码中显式设置obj.style.display = "none";
,则该值将保持为undefined
,直到首次单击。第一次单击后,它就设置好了,一切都按您想要的方式工作。
要解决此问题,请使用getComputedStyle()
访问元素的样式。这包括通过CSS设置的所有样式:
function showDiv(id){
var obj = document.getElementById(id),
compStyle = window.getComputedStyle( obj );
if( compStyle.display == "none") {
obj.style.display='block'
} else {
obj.style.display='none'
}
}