2014-03-27 193 views
0

我正在为我正在构建的网页开发一个简单的打开/关闭动画DIV。它应该是简单的,但有些东西给我一个挂断。我的继承人JS代码:Javascript动画打开/关闭菜单

<script> 
slideOpen = 1; 
alert(slideOpen); 

function openClose(){ 

if (slideOpen = 1){ 
    closeTab(); 
    slideOpen = 0; 
}; 
if (slideOpen = 0){ 
    openTab(); 
    slideOpen = 1; 
}; 
function closeTab(){ 
    $("#upcomingEvents").animate({top:"-910px"}); 
} 

function openTab(){ 
    $("#upcomingEvents").animate({top:"-300px"}); 
} 
alert(slideOpen); 
} 
</script> 

而这里的运行功能的HTML:

<a href="javascript:openClose();" style="position: absolute; bottom: 32px; right: 32px;" >Open/Close Tab</a> 

那么,这背后的想法是,只要用户点击锚,它运行openClose()函数。在初始页面加载时,slideOpen = 1,如果用户点击锚点,如果slideOpen = 1,则运行closeTab()动画函数,然后设置slideOpen = 0。如果slideOpen = 0,则应运行openTab()动画函数,设置slideOpen = 1。

基本上: 如果tab打开slideOpen = 1;如果选项卡关闭,则为 slideOpen = 0;

但是,我也在这个函数中设置了两个警报;一个是页面加载时的初始值,另一个是每次调用openClose()函数时都会运行的值。

在初始页面加载时,slideOpen警报显示为“1”。单击锚点关闭选项卡后,openClose()函数中的slideOpen警报显示“0”,并且选项卡成功关闭。再次单击锚点时,警报再次显示“0”,并且该选项卡不会重新打开。它应该显示slideOpen =“1”,但由于某种原因,它不是。这就是我的问题。

在此先感谢。

+0

喂 - 你试过https://api.jquery.com/slideToggle/?它会自动跟踪你的可见状态,所以你不必这样做。 –

+0

我可以稍后补充说明,谢谢你给我看。但是,这个问题总的来说就是我自己的切换不起作用。 – wUmpage

回答

0
if (slideOpen = 1){ 

在这里,您将1分配给变量slideOpen,因此条件将始终评估为true。

使用==,而不是=这两种情况

if (slideOpen == 1){ 
+0

谢谢,这是正确的,但这只是我的问题的一半。现在,当您点击锚点时,选项卡动画关闭,然后立即再次打开。我没有改变任何东西,除了“=”到“==”。 – wUmpage

+0

@ user2217822它似乎工作正常.. http://jsfiddle.net/tilwinjoy/S24Pz/10/ –

+0

@ user2217822你对'(slideOpen == 0)'做了同样的事吗? – easwee