2012-07-05 158 views
0

我必须使一个p元素消失点击一个按钮,而div元素滑过它。如果p元素已隐藏,并且div已经覆盖它,则单击该按钮时p应该变回可见状态,但在1秒后div会滑落。错误与CSS可见性属性和JavaScript setTimeout方法

第一部分工作正常,但在第二种情况下,不能在p的visibility属性上使用setTimeout函数。

下面的代码:

function slide_wiki(){ 
    var wiki=document.getElementById('wiki_bar'); 
    var p_vita=document.getElementById('vita'); 
    var width=wiki.style.width; 
    slide(wiki, 100); 
    if(width!='0%'){ 
     setTimeout(function(){p_vita.style.visibility='visible'}, 1000); 
     wiki.style.borderRight='1px solid #E0E0E0'; 
    }else{ 
     p_vita.style.visibility='hidden'; 
     setTimeout(function(){ 
      wiki.style.borderRight='0px solid white'; 
     }, 900); 
    } 
} 

我创建了一个的jsfiddle的建议,但由于某些原因的滑动功能并不在所有的工作,仍然需要CSS和JavaScript是存在的,所以应该反正帮助。 http://jsfiddle.net/bigcola317/GRs3V/5/

+0

你有一个jsfiddle?你有没有尝试CSS'display'属性? – starbeamrainbowlabs 2012-07-05 17:40:28

+0

我会尝试它,但它会毁了我的设计,所以我希望有更好的解决方案。 – BigCola 2012-07-05 17:44:27

+0

如果您提供小提琴,我们可以努力获得正确的代码,然后您可以将它放回到您的设计中。 – starbeamrainbowlabs 2012-07-05 17:54:03

回答

1

由于我看不到您的代码,我无法跟踪该错误。所以,相反,我使用简单的css过渡制作了一个工作解决方案。看看它是否适合你:http://jsfiddle.net/joplomacedo/V3yat/

+0

创建小提琴http://jsfiddle.net/bigcola317/GRs3V/5/ – BigCola 2012-07-06 09:03:39

0

解决它。问题是,如果“p”不可见,那么我点击按钮后,slide()会在“div”上执行slide_close()函数,在“p”上为style属性设置新值。我猜想问题可能是,如此我试图在slide_close(改变样式属性可能会覆盖上visibility属性进行的设置)与功能setAttribute()方法:

p_vita.style.width="..."; 
p_vita.style.marginLeft="..."; 

,并且使工作。这不是很清楚,但无论如何感谢:)