除非单击两次,否则不会触发我的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'
  }
}

07-28 03:05
查看更多