2013-10-29 32 views
0

http://jsfiddle.net/xNnQ5/(HTML)的JavaScript可折叠菜单错误

我想使用JavaScript(和HTML)创建为我的网站可折叠菜单(c_menu)。我希望在用户点击div menu_open时打开它,并在用户点击menu_close时关闭。但是,当我加载页面时,所发生的只是菜单向上滚动,就好像我点击了menu_close,而我没有。我该怎么办?


代码:


的index.html(只有一个片段)

<style type = "text/css"> 
#c_menu { 
position: absolute; 
width: 435px; 
height: 250px; 
z-index: 2; 
left: 6px; 
top: 294px; 
background-color: #0099CC; 
margin: auto; 
</style> 

<div id="menu_open"><img src="images/open.jpg" width="200" height="88" /></div> 
<input type="button" name="menu_close" id="menu_close" value="Close"/> 
<div id="c_menu"></div> 

<script type = "text/javascript" src = "menu.js"> </script> 

menu.js(全码)

document.getElementById("c_menu").style.height = "0px"; 
document.getElementById("menu_open").onclick = menu_view(true); 
document.getElementById("menu_close").onclick = menu_view(false); 

function menu_view(toggle) 
{ 
    if(toggle == true) 
    { 
     document.getElementById("c_menu").style.height = "0px"; 
     changeheight(5, 250, 0); 
    } 
    if(toggle == false) 
    { 
     document.getElementById("c_menu").height = "250px"; 
     changeheight(-5, 0, 250); 
    } 
} 

function changeheight(incr, maxheight, init) 
{ 
    setTimeout(function() { 
    var total = init; 
    total += incr; 
    var h = total + "px"; 
    document.getElementById("c_menu").style.height = h;        
    if (total != maxheight) {    
    changeheight(incr, maxheight, total);    
    }       
}, 5) 
} 
+0

你可以提供一个小提琴? – Arjun

+0

@Arjun - http://jsfiddle.net/xNnQ5/ – Joe

+1

@ xtof的答案根据您的要求工作,我想! – Arjun

回答

1

试试这个:

document.getElementById("menu_open").onclick = function() {menu_view(true)}; 
document.getElementById("menu_close").onclick = function() {menu_view(false)}; 

当你用括号(...的onclick = menu_view定义函数(true)),该函数被自动调用。

当你有功能没有参数,你可以使用它像你这样,但没有括号:

document.getElementById("menu_open").onclick = menu_view; 
document.getElementById("menu_close").onclick = menu_view;